I MariaDB, EXPORT_SET()
är en inbyggd strängfunktion som returnerar en sträng som reflekterar bitarna i det angivna värdet. För varje bit som anges i det angivna värdet får du en "på"-sträng och för varje bit som inte är inställd i värdet får du en "av"-sträng.
Den accepterar minst tre argument, plus två valfria argument.
Syntax
Syntaxen ser ut så här:
EXPORT_SET(bits, on, off[, separator[, number_of_bits]])
Följande tabell ger en förklaring av dessa argument.
bits | Värdet som du vill att resultaten ska returneras för. Tillhandahålls som ett heltal, men det konverteras till bitar. För varje bit som ställs in i detta värde får du en på sträng, och för varje bit som inte är inställd i värdet får du en av sträng. Bitarna undersöks från höger till vänster (från lågordningsbitar till högordningsbitar). |
on | Strängen som returneras för någon på bitar. |
off | Strängen som returneras för eventuell av bitar. |
separator | Valfritt argument som du kan använda för att ange vilken separator som ska användas. Standardvärdet är kommatecken. Därför, om du inte anger detta argument används ett kommatecken som avgränsare. |
number_of_bits | Antalet bitar som ska undersökas. Standardvärdet är 64. Om du anger ett högre värde, klipps detta tyst till 64 om det är större än 64. |
Exempel
Här är ett grundläggande exempel:
SELECT EXPORT_SET(13,'On','Off',',',4);
Resultat:
+---------------------------------+ | EXPORT_SET(13,'On','Off',',',4) | +---------------------------------+ | On,Off,On,On | +---------------------------------+
Vi kan se att den första, tredje och fjärde biten är satta, men den andra är inte det.
Vi kan använda BIN()
funktion för att returnera ett liknande resultat, men i omvänd ordning:
SELECT BIN(13);
Resultat:
+---------+ | BIN(13) | +---------+ | 1101 | +---------+
BIN()
funktion returnerar en strängrepresentation av det binära värdet för den givna longlong. I det här exemplet returnerade den tre 1
s.
I vår EXPORT_SET()
Exempelvis angav vi det on
och off
ska användas för att representera 1
och 0
respektive. Vi kan dock ändra det (nedan).
Även med EXPORT_SET()
, läggs strängar till resultatet från vänster till höger. Därför resultatet från EXPORT_SET()
ser ut som en spegelbild av resultatet från BIN()
.
Ändra på/av-värden
Här är den igen, men den här gången använder vi en annan sträng för on
och off
uppger.
SELECT EXPORT_SET(7,'1','0',',',4);
Resultat:
+-----------------------------+ | EXPORT_SET(7,'1','0',',',4) | +-----------------------------+ | 1,1,1,0 | +-----------------------------+
Den här gången använder vi 1
och 0
, liknande vad BIN()
funktion returnerar, men med en extra avgränsare (och omvänd).
Ändra separator
Det fjärde (valfria) argumentet anger vilken separator som ska användas. Här är den med en annan separator:
SELECT EXPORT_SET(7,'True','False','-',4);
Resultat:
+------------------------------------+ | EXPORT_SET(7,'True','False','-',4) | +------------------------------------+ | True-True-True-False | +------------------------------------+
Ändra antalet bitar som ska undersökas
Det femte (valfria) argumentet anger hur många bitar som ska undersökas. I de tidigare exemplen använde vi 4 som antalet bitar att undersöka. Vi kan öka detta om vi vill:
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 det här fallet är inte alla extra bitar inställda. Låt oss öka värdet på det första argumentet för att se hur detta påverkar 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ärden
Som nämnts är det fjärde och femte argumentet valfria. När du utelämnar dessa används standardvärdena.
Standardantal bitar
Om vi tar bort det sista argumentet undersöks 64 bitar:
SELECT EXPORT_SET(172,'1','0','');
Resultat:
+------------------------------------------------------------------+ | EXPORT_SET(172,'1','0','') | +------------------------------------------------------------------+ | 0011010100000000000000000000000000000000000000000000000000000000 | +------------------------------------------------------------------+
I det här fallet tog jag också bort separatorn för att göra utdata mer koncis.
Standardavgränsare
Vi kan också ta bort separatorargumentet. När vi gör detta, EXPORT_SET()
använder kommatecken som standardavgränsare.
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 | +---------------------------------------------------------------------------------------------------------------------------------+
Nollargument
Om något av argumenten är null
, resultatet är 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";
Resultat:
+------+------+------+------+------+ | 1 | 2 | 3 | 4 | 5 | +------+------+------+------+------+ | NULL | NULL | NULL | NULL | NULL | +------+------+------+------+------+
Argument saknas
Anropar EXPORT_SET()
utan att skicka några argument (eller med fel antal argument) resulterar i ett fel:
SELECT EXPORT_SET();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'EXPORT_SET'