V MariaDB, EXPORT_SET()
je vestavěná řetězcová funkce, která vrací řetězec, který odráží bity v zadané hodnotě. Pro každý bit nastavený v zadané hodnotě získáte řetězec „on“ a pro každý bit, který není nastaven v hodnotě, získáte řetězec „off“.
Přijímá minimálně tři argumenty plus dva volitelné argumenty.
Syntaxe
Syntaxe vypadá takto:
EXPORT_SET(bits, on, off[, separator[, number_of_bits]])
Následující tabulka poskytuje vysvětlení těchto argumentů.
bits | Hodnota, pro kterou chcete vrátit výsledky. Poskytováno jako celé číslo, ale je převedeno na bity. Za každý bit, který je nastaven v této hodnotě, dostanete on řetězec a za každý bit, který není nastaven v hodnotě, získáte off tětiva. Bity jsou zkoumány zprava doleva (od bitů nižšího řádu k bitům vyššího řádu). |
on | Řetězec, který je vrácen pro jakékoli zapnuto bitů. |
off | Řetězec, který je vrácen při každém vypnutí bitů. |
separator | Volitelný argument, který můžete použít k určení oddělovače, který se má použít. Výchozí hodnotou je znak čárky. Pokud tedy tento argument neuvedete, použije se jako oddělovač čárka. |
number_of_bits | Počet bitů k prozkoumání. Výchozí hodnota je 64. Pokud zadáte větší hodnotu, bude tato hodnota tiše oříznuta na 64, pokud je větší než 64. |
Příklad
Zde je základní příklad:
SELECT EXPORT_SET(13,'On','Off',',',4);
Výsledek:
+---------------------------------+ | EXPORT_SET(13,'On','Off',',',4) | +---------------------------------+ | On,Off,On,On | +---------------------------------+
Vidíme, že první, třetí a čtvrtý bit jsou nastaveny, ale druhý nikoli.
Můžeme použít BIN()
funkce vrátit podobný výsledek, ale v opačném pořadí:
SELECT BIN(13);
Výsledek:
+---------+ | BIN(13) | +---------+ | 1101 | +---------+
BIN()
funkce vrací řetězcovou reprezentaci binární hodnoty daného longlong. V tomto příkladu vrátil tři 1
s.
V našem EXPORT_SET()
například jsme uvedli, že on
a off
by měl být použit k reprezentaci 1
a 0
resp. Můžeme to však změnit (níže).
Také pomocí EXPORT_SET()
, jsou k výsledku přidávány řetězce zleva doprava. Proto výsledek z EXPORT_SET()
vypadá jako zrcadlový obraz výsledku z BIN()
.
Změna hodnot zapnutí/vypnutí
Tady je to znovu, ale tentokrát pro on
použijeme jiný řetězec a off
státy.
SELECT EXPORT_SET(7,'1','0',',',4);
Výsledek:
+-----------------------------+ | EXPORT_SET(7,'1','0',',',4) | +-----------------------------+ | 1,1,1,0 | +-----------------------------+
Tentokrát používáme 1
a 0
, podobně jako BIN()
funkce vrátí, ale s přidaným oddělovačem (a obráceným).
Změňte oddělovač
Čtvrtý (volitelný) argument určuje, jaký oddělovač se má použít. Tady je to s jiným oddělovačem:
SELECT EXPORT_SET(7,'True','False','-',4);
Výsledek:
+------------------------------------+ | EXPORT_SET(7,'True','False','-',4) | +------------------------------------+ | True-True-True-False | +------------------------------------+
Změňte počet bitů k prozkoumání
Pátý (volitelný) argument určuje, kolik bitů se má prozkoumat. V předchozích příkladech jsme použili 4 jako počet bitů k prozkoumání. Můžeme to zvýšit, pokud chceme:
SELECT EXPORT_SET(7,'1','0',',',10);
Výsledek:
+------------------------------+ | EXPORT_SET(7,'1','0',',',10) | +------------------------------+ | 1,1,1,0,0,0,0,0,0,0 | +------------------------------+
V tomto případě nejsou nastaveny všechny extra bity. Pojďme zvýšit hodnotu prvního argumentu, abychom viděli, jak to ovlivní výsledek:
SELECT EXPORT_SET(172,'1','0',',',10);
Výsledek:
+--------------------------------+ | EXPORT_SET(172,'1','0',',',10) | +--------------------------------+ | 0,0,1,1,0,1,0,1,0,0 | +--------------------------------+
Výchozí hodnoty
Jak již bylo zmíněno, čtvrtý a pátý argument jsou nepovinné. Když je vynecháte, použijí se výchozí hodnoty.
Výchozí počet bitů
Pokud odstraníme poslední argument, prozkoumá se 64 bitů:
SELECT EXPORT_SET(172,'1','0','');
Výsledek:
+------------------------------------------------------------------+ | EXPORT_SET(172,'1','0','') | +------------------------------------------------------------------+ | 0011010100000000000000000000000000000000000000000000000000000000 | +------------------------------------------------------------------+
V tomto případě jsem také odstranil oddělovač, aby byl výstup stručnější.
Výchozí oddělovač
Můžeme také odstranit argument oddělovače. Když to uděláme, EXPORT_SET()
používá čárku jako výchozí oddělovač.
SELECT EXPORT_SET(123456789,'1','0');
Výsledek:
+-----------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------+ | 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 | +---------------------------------------------------------------------------------------------------------------------------------+
Nulové argumenty
Pokud je některý z argumentů null
, výsledkem je 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";
Výsledek:
+------+------+------+------+------+ | 1 | 2 | 3 | 4 | 5 | +------+------+------+------+------+ | NULL | NULL | NULL | NULL | NULL | +------+------+------+------+------+
Chybí argumenty
Volání EXPORT_SET()
bez předání jakýchkoli argumentů (nebo s nesprávným počtem argumentů) dojde k chybě:
SELECT EXPORT_SET();
Výsledek:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'EXPORT_SET'