I MariaDB, EXPORT_SET()
er en indbygget strengfunktion, der returnerer en streng, der afspejler bits i den angivne værdi. For hver bit, der er sat i den angivne værdi, får du en "on"-streng, og for hver bit, der ikke er sat i værdien, får du en "off"-streng.
Den accepterer minimum tre argumenter plus to valgfrie argumenter.
Syntaks
Syntaksen ser sådan ud:
EXPORT_SET(bit, til, fra[, separator[, antal_bit]])
Følgende tabel giver en forklaring på disse argumenter.
bits | Den værdi, som du gerne vil have resultaterne returneret for. Leveres som et heltal, men det er konverteret til bits. For hver bit, der er indstillet i denne værdi, får du en on streng, og for hver bit, der ikke er angivet i værdien, får du en fra snor. Bittene undersøges fra højre mod venstre (fra lavordens til højordens bits). |
til | Den streng, der returneres for enhver på bits. |
fra | Den streng, der returneres for enhver fra bits. |
separator | Valgfrit argument, som du kan bruge til at angive den separator, der skal bruges. Standardværdien er kommategnet. Derfor, hvis du ikke angiver dette argument, bruges et komma som separator. |
antal_bits | Antallet af bits, der skal undersøges. Standardværdien er 64. Hvis du angiver en større værdi, klippes denne lydløst til 64, hvis den er større end 64. |
Eksempel
Her er et grundlæggende eksempel:
SELECT EXPORT_SET(13,'Til','Fra',',',4);
Resultat:
+--------------------------------+| EXPORT_SET(13,'Til','Fra',',',4) |+------------------------------------ ---+| Til, Fra, Til, Til |+--------------------------------+
Vi kan se, at den første, tredje og fjerde bit er sat, men den anden er ikke.
Vi kan bruge BIN()
funktion for at returnere et lignende resultat, men i omvendt rækkefølge:
VÆLG BIN(13);
Resultat:
+--------+| BIN(13) |+---------+| 1101 |+---------+
BIN()
funktion returnerer en strengrepræsentation af den binære værdi af den givne longlong. I dette eksempel returnerede den tre 1
s.
I vores EXPORT_SET()
for eksempel specificerede vi det on
og fra
skal bruges til at repræsentere 1
og 0
henholdsvis. Vi kan dog ændre det (nedenfor).
Også med EXPORT_SET()
, tilføjes strenge til resultatet fra venstre mod højre. Derfor resultatet fra EXPORT_SET()
ligner et spejlbillede af resultatet fra BIN()
.
Skift tænd/sluk-værdierne
Her er det igen, men denne gang bruger vi en anden streng til on
og fra
oplyser.
SELECT EXPORT_SET(7,'1','0',',',4);
Resultat:
+-------------------------------------+| EXPORT_SET(7,'1','0',',',4) |+-----------------------------------+ | 1,1,1,0 |+-------------------------------------+
Denne gang bruger vi 1
og 0
, svarende til hvad BIN()
funktion returnerer, men med en tilføjet separator (og omvendt).
Skift separatoren
Det fjerde (valgfri) argument angiver, hvilken separator der skal bruges. Her er den med en anden separator:
SELECT EXPORT_SET(7,'True','False','-',4);
Resultat:
+--------------------------------------------+| EXPORT_SET(7,'True','False','-',4) |+------------------------------------ ------+| True-True-True-False |+--------------------------------------------+
Skift antallet af bits, der skal undersøges
Det femte (valgfrie) argument angiver, hvor mange bit der skal undersøges. I de foregående eksempler brugte vi 4 som antallet af bits at undersøge. Vi kan øge dette, hvis vi vil:
SELECT EXPORT_SET(7,'1','0',',',10);
Resultat:
+--------------------------------------+| EXPORT_SET(7,'1','0',',',10) |+------------------------------------ +| 1,1,1,0,0,0,0,0,0,0 |+------------------------------------ -+
I dette tilfælde er alle de ekstra bits ikke indstillet. Lad os øge værdien af det første argument for at se, hvordan dette påvirker resultatet:
SELECT EXPORT_SET(172,'1','0',',',10);
Resultat:
+--------------------------------+| EXPORT_SET(172,'1','0',',',10) |+------------------------------------ --+| 0,0,1,1,0,1,0,1,0,0 |+------------------------------------ ---+
Standardværdier
Som nævnt er det fjerde og femte argument valgfrit. Når du udelader disse, bruges standardværdierne.
Standard antal bits
Hvis vi fjerner det sidste argument, undersøges 64 bit:
SELECT EXPORT_SET(172,'1','0','');
Resultat:
+---------------------------------------------- --------------------+| EXPORT_SET(172,'1','0','') |+-------------------------------- ----------------------------------+| 00110101000000000000000000000000000000000000000000000000000000000000 |+-------------------------------------------------------- -------------------+
I dette tilfælde fjernede jeg også separatoren for at gøre output mere kortfattet.
Standardseparator
Vi kan også fjerne separatorargumentet. Når vi gør dette, EXPORT_SET()
bruger kommaet som standardseparator.
SELECT EXPORT_SET(123456789,'1','0');
Resultat:
+---------------------------------------------- ----------------------------------------------------------+ -------------------------------------------------- -------------------------------------------------- ----------------------------+| 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 |+-------------------- -------------------------------------------------- -------------------------------------------------- --------+
Nul-argumenter
Hvis nogen af argumenterne er null
, resultatet er null
:
VÆLG 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',nul,4) SOM "4", EXPORT_SET(7,'1','0',',',null) SOM "5";
Resultat:
+------+------+------+------+------+| 1 | 2 | 3 | 4 | 5 |+------+------+------+------+------+| NULL | NULL | NULL | NULL | NULL |+------+------+------+------+------+
Manglende argumenter
Kalder EXPORT_SET()
uden at sende nogen argumenter (eller med det forkerte antal argumenter) resulterer i en fejl:
VÆLG EXPORT_SET();
Resultat:
FEJL 1582 (42000):Forkert parameterantal i kaldet til den oprindelige funktion 'EXPORT_SET'