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'