sql >> Database >  >> RDS >> MariaDB

Hoe EXPORT_SET() werkt in MariaDB

In MariaDB, EXPORT_SET() is een ingebouwde tekenreeksfunctie die een tekenreeks retourneert die de bits in de opgegeven waarde weerspiegelt. Voor elke bit die in de opgegeven waarde is ingesteld, krijg je een "on" string en voor elke bit die niet in de waarde is ingesteld, krijg je een "off" string.

Het accepteert minimaal drie argumenten, plus twee optionele argumenten.

Syntaxis

De syntaxis gaat als volgt:

EXPORT_SET(bits, on, off[, separator[, number_of_bits]])

De volgende tabel geeft een uitleg van die argumenten.

bits De waarde waarvoor u de resultaten wilt retourneren. Geleverd als een geheel getal, maar het is geconverteerd naar bits. Voor elk bit dat in deze waarde is ingesteld, krijg je een aan tekenreeks, en voor elk bit dat niet in de waarde is ingesteld, krijg je een uit draad. De bits worden van rechts naar links bekeken (van lage tot hoge orde bits).
on De tekenreeks die wordt geretourneerd voor een on stukjes.
off De tekenreeks die wordt geretourneerd voor een uit stukjes.
separator Optioneel argument dat u kunt gebruiken om het te gebruiken scheidingsteken op te geven. De standaardwaarde is het kommateken. Als u dit argument niet opgeeft, wordt daarom een ​​komma gebruikt als scheidingsteken.
number_of_bits Het aantal te onderzoeken bits. De standaardwaarde is 64. Als u een grotere waarde opgeeft, wordt deze stil geknipt tot 64 indien groter dan 64.

Voorbeeld

Hier is een eenvoudig voorbeeld:

SELECT EXPORT_SET(13,'On','Off',',',4);

Resultaat:

+---------------------------------+
| EXPORT_SET(13,'On','Off',',',4) |
+---------------------------------+
| On,Off,On,On                    |
+---------------------------------+

We kunnen zien dat de eerste, derde en vierde bits zijn ingesteld, maar de tweede niet.

We kunnen de BIN() . gebruiken functie om een ​​soortgelijk resultaat terug te geven, maar in omgekeerde volgorde:

SELECT BIN(13);

Resultaat:

+---------+
| BIN(13) |
+---------+
| 1101    |
+---------+

De BIN() functie retourneert een tekenreeksrepresentatie van de binaire waarde van de opgegeven longlong. In dit voorbeeld retourneerde het drie 1 s.

In onze EXPORT_SET() we hebben bijvoorbeeld gespecificeerd dat on en off moet worden gebruikt om de 1 . weer te geven en 0 respectievelijk. We kunnen dat echter veranderen (hieronder).

Ook met EXPORT_SET() , worden strings van links naar rechts aan het resultaat toegevoegd. Daarom is het resultaat van EXPORT_SET() ziet eruit als een spiegelbeeld van het resultaat van BIN() .

De aan/uit-waarden wijzigen

Hier is het weer, maar deze keer gebruiken we een andere tekenreeks voor de on en off staten.

SELECT EXPORT_SET(7,'1','0',',',4);

Resultaat:

+-----------------------------+
| EXPORT_SET(7,'1','0',',',4) |
+-----------------------------+
| 1,1,1,0                     |
+-----------------------------+

Deze keer gebruiken we 1 en 0 , vergelijkbaar met de wat de BIN() functie retourneert, maar met een toegevoegd scheidingsteken (en omgekeerd).

Verander het scheidingsteken

Het vierde (optionele) argument geeft aan welk scheidingsteken moet worden gebruikt. Hier is het met een ander scheidingsteken:

SELECT EXPORT_SET(7,'True','False','-',4);

Resultaat:

+------------------------------------+
| EXPORT_SET(7,'True','False','-',4) |
+------------------------------------+
| True-True-True-False               |
+------------------------------------+

Het aantal te onderzoeken bits wijzigen

Het vijfde (optionele) argument geeft aan hoeveel bits moeten worden onderzocht. In de vorige voorbeelden gebruikten we 4 als het aantal te onderzoeken bits. We kunnen dit verhogen als we willen:

SELECT EXPORT_SET(7,'1','0',',',10);

Resultaat:

+------------------------------+
| EXPORT_SET(7,'1','0',',',10) |
+------------------------------+
| 1,1,1,0,0,0,0,0,0,0          |
+------------------------------+

In dit geval zijn niet alle extra bits ingesteld. Laten we de waarde van het eerste argument verhogen om te zien hoe dit het resultaat beïnvloedt:

SELECT EXPORT_SET(172,'1','0',',',10);

Resultaat:

+--------------------------------+
| EXPORT_SET(172,'1','0',',',10) |
+--------------------------------+
| 0,0,1,1,0,1,0,1,0,0            |
+--------------------------------+

Standaardwaarden

Zoals vermeld, zijn het vierde en vijfde argument optioneel. Als u deze weglaat, worden de standaardwaarden gebruikt.

Standaard aantal bits

Als we het laatste argument verwijderen, worden 64 bits onderzocht:

SELECT EXPORT_SET(172,'1','0','');

Resultaat:

+------------------------------------------------------------------+
| EXPORT_SET(172,'1','0','')                                       |
+------------------------------------------------------------------+
| 0011010100000000000000000000000000000000000000000000000000000000 |
+------------------------------------------------------------------+

In dit geval heb ik ook het scheidingsteken verwijderd om de uitvoer beknopter te maken.

Standaard scheidingsteken

We kunnen het scheidingstekenargument ook verwijderen. Wanneer we dit doen, EXPORT_SET() gebruikt de komma als standaardscheidingsteken.

SELECT EXPORT_SET(123456789,'1','0');

Resultaat:

+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------+
| EXPORT_SET(123456789,'1','0')                                                                                                   |
+---------------------------------------------------------------------------------------------------------------------------------+
| 1,0,1,0,1,0,0,0,1,0,1,1,0,0,1,1,1,1,0,1,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 |
+---------------------------------------------------------------------------------------------------------------------------------+

Nullargumenten

Als een van de argumenten null . is , het resultaat is null :

SELECT 
    EXPORT_SET(null,'1','0') AS "1",
    EXPORT_SET(7,null,'0') AS "2",
    EXPORT_SET(7,'1',null) AS "3",
    EXPORT_SET(7,'1','0',null,4) AS "4",
    EXPORT_SET(7,'1','0',',',null) AS "5";

Resultaat:

+------+------+------+------+------+
| 1    | 2    | 3    | 4    | 5    |
+------+------+------+------+------+
| NULL | NULL | NULL | NULL | NULL |
+------+------+------+------+------+

Ontbrekende argumenten

Aanroepen van EXPORT_SET() zonder argumenten door te geven (of met het verkeerde aantal argumenten) resulteert in een fout:

SELECT EXPORT_SET();

Resultaat:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'EXPORT_SET'

  1. Oracle 11g op Mac OS X

  2. Controleer de ruimte die wordt gebruikt door een tabel in SQL Server

  3. Hoe kan ik een offset toevoegen aan een select-query in Oracle 11g?

  4. Hoe Oracle Linux Automation Manager te installeren (ook bekend als "Oracle Ansible Tower")