MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie EXPORT_SET() in MariaDB funktioniert

In MariaDB EXPORT_SET() ist eine integrierte Zeichenfolgenfunktion, die eine Zeichenfolge zurückgibt, die die Bits im angegebenen Wert widerspiegelt. Für jedes gesetzte Bit im angegebenen Wert erhalten Sie einen „on“-String und für jedes nicht gesetzte Bit im Wert erhalten Sie einen „off“-String.

Es akzeptiert mindestens drei Argumente plus zwei optionale Argumente.

Syntax

Die Syntax lautet wie folgt:

EXPORT_SET(bits, on, off[, separator[, number_of_bits]]) 

Die folgende Tabelle enthält eine Erläuterung dieser Argumente.

bits Der Wert, für den Sie die Ergebnisse zurückgeben möchten. Wird als Ganzzahl bereitgestellt, aber in Bits konvertiert. Für jedes Bit, das in diesem Wert gesetzt ist, erhalten Sie ein on string, und für jedes Bit, das nicht im Wert gesetzt ist, erhalten Sie ein off Schnur. Die Bits werden von rechts nach links untersucht (von niederwertigen zu höherwertigen Bits).
on Die Zeichenfolge, die für on zurückgegeben wird Bits.
off Die Zeichenfolge, die für off zurückgegeben wird Bits.
separator Optionales Argument, mit dem Sie das zu verwendende Trennzeichen angeben können. Der Standardwert ist das Kommazeichen. Wenn Sie dieses Argument nicht angeben, wird daher ein Komma als Trennzeichen verwendet.
number_of_bits Die Anzahl der zu untersuchenden Bits. Der Standardwert ist 64. Wenn Sie einen größeren Wert angeben, wird dieser stillschweigend auf 64 gekürzt, wenn er größer als 64 ist.

Beispiel

Hier ist ein einfaches Beispiel:

SELECT EXPORT_SET(13,'On','Off',',',4); 

Ergebnis:

+---------------------------------+| EXPORT_SET(13,'Ein','Aus',',',4) |+------------------------------ ---+| Ein,Aus,Ein,Ein |+---------------------------------+

Wir können sehen, dass das erste, dritte und vierte Bit gesetzt sind, aber das zweite nicht.

Wir können den BIN() verwenden Funktion, um ein ähnliches Ergebnis zurückzugeben, jedoch in umgekehrter Reihenfolge:

SELECT BIN(13); 

Ergebnis:

+---------+| BIN(13) |+---------+| 1101 |+---------+

Der BIN() Die Funktion gibt eine Zeichenfolgendarstellung des Binärwerts des angegebenen longlong zurück. In diesem Beispiel wurden drei 1 zurückgegeben s.

In unserem EXPORT_SET() Beispielsweise haben wir das on angegeben und off sollte verwendet werden, um die 1 darzustellen und 0 bzw. Wir können das aber ändern (unten).

Auch mit EXPORT_SET() , Zeichenfolgen werden dem Ergebnis von links nach rechts hinzugefügt. Daher das Ergebnis von EXPORT_SET() sieht aus wie ein Spiegelbild des Ergebnisses von BIN() .

Ändern Sie die Ein/Aus-Werte

Hier ist es wieder, aber dieses Mal verwenden wir einen anderen String für on und off Zustände.

SELECT EXPORT_SET(7,'1','0',',',4); 

Ergebnis:

+-------------------------------------+| EXPORT_SET(7,'1','0',',',4) |+-------------------------------------+ | 1,1,1,0 |+------------------------------------+

Dieses Mal verwenden wir 1 und 0 , ähnlich wie bei BIN() Funktion gibt zurück, aber mit einem hinzugefügten Trennzeichen (und umgekehrt).

Trennzeichen ändern

Das vierte (optionale) Argument gibt an, welches Trennzeichen verwendet werden soll. Hier ist es mit einem anderen Trennzeichen:

SELECT EXPORT_SET(7,'True','False','-',4); 

Ergebnis:

+------------------------------------+| EXPORT_SET(7,'Wahr','Falsch','-',4) |+------------------------------ ------+| Wahr-Wahr-Wahr-Falsch |+------------------------------------+

Ändern Sie die Anzahl der zu untersuchenden Bits

Das fünfte (optionale) Argument gibt an, wie viele Bits untersucht werden sollen. In den vorherigen Beispielen haben wir 4 als Anzahl der zu untersuchenden Bits verwendet. Wir können dies erhöhen, wenn wir wollen:

SELECT EXPORT_SET(7,'1','0',',',10); 

Ergebnis:

+------------------------------+| EXPORT_SET(7,'1','0',',',10) |+------------------------------ +| 1,1,1,0,0,0,0,0,0,0 |+------------------------------------ -+

In diesem Fall werden nicht alle zusätzlichen Bits gesetzt. Lassen Sie uns den Wert des ersten Arguments erhöhen, um zu sehen, wie sich dies auf das Ergebnis auswirkt:

SELECT EXPORT_SET(172,'1','0',',',10); 

Ergebnis:

+-------------------------------+| EXPORT_SET(172,'1','0',',',10) |+------------------------------ --+| 0,0,1,1,0,1,0,1,0,0 |+------------------------------------ ---+

Standardwerte

Wie bereits erwähnt, sind das vierte und das fünfte Argument optional. Wenn Sie diese weglassen, werden die Standardwerte verwendet.

Standardanzahl von Bits

Wenn wir das letzte Argument entfernen, werden 64 Bit untersucht:

SELECT EXPORT_SET(172,'1','0',''); 

Ergebnis:

+---------------------------------------------- --------------------+| EXPORT_SET(172,'1','0','') |+---------------------------------------------- ---------------------------------+| 00110101000000000000000000000000000000000000000000000000000 |+---------------------------------------------- -------------------+

In diesem Fall habe ich auch das Trennzeichen entfernt, um die Ausgabe übersichtlicher zu gestalten.

Standardtrennzeichen

Wir können auch das Trennzeichenargument entfernen. Wenn wir dies tun, EXPORT_SET() verwendet das Komma als Standardtrennzeichen.

SELECT EXPORT_SET(123456789,'1','0'); 

Ergebnis:

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

Null-Argumente

Wenn eines der Argumente null ist , ist das Ergebnis 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"; 

Ergebnis:

+------+------+------+------+------+| 1 | 2 | 3 | 4 | 5 |+------+------+------+------+------+| NULL | NULL | NULL | NULL | NULL |+------+------+------+------+------+

Fehlende Argumente

Aufruf von EXPORT_SET() ohne Übergabe von Argumenten (oder mit der falschen Anzahl von Argumenten) führt zu einem Fehler:

SELECT EXPORT_SET(); 

Ergebnis:

FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion 'EXPORT_SET'