sql >> Databasteknik >  >> RDS >> MariaDB

Hur EXPORT_SET() fungerar i MariaDB

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 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 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'

  1. bygga en dynamisk SQL-fråga med psycopg2 python-bibliotek och använda bra konverteringsverktyg

  2. Hur skapar jag en unik begränsning som också tillåter nollor?

  3. SQL Server bcp Utility och den numeriska datatypen

  4. Java SQLData - Casta till användarobjekt med en lista/array?