sql >> Databáze >  >> RDS >> MariaDB

Jak funguje EXPORT_SET() v MariaDB

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'

  1. SQL DEFAULT Omezení pro vložení sloupce s výchozí hodnotou do tabulky SQL Server

  2. Budoucnost Postgres-XL

  3. Použijte vázaný parametr vícekrát

  4. Kvíz o výkonu a ladění Oracle