MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona EXPORT_SET() in MariaDB

In MariaDB, EXPORT_SET() è una funzione stringa incorporata che restituisce una stringa che riflette i bit nel valore specificato. Per ogni bit impostato nel valore specificato, ottieni una stringa "on" e per ogni bit non impostato nel valore, ottieni una stringa "off".

Accetta un minimo di tre argomenti, più due argomenti facoltativi.

Sintassi

La sintassi è questa:

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

La tabella seguente fornisce una spiegazione di tali argomenti.

bits Il valore per il quale desideri che vengano restituiti i risultati. Fornito come numero intero, ma viene convertito in bit. Per ogni bit impostato in questo valore ottieni un on stringa e per ogni bit che non è impostato nel valore, ottieni un off corda. I bit vengono esaminati da destra a sinistra (da bit di ordine inferiore a bit di ordine superiore).
on La stringa restituita per ogni on bit.
off La stringa restituita per ogni off bit.
separator Argomento facoltativo che puoi utilizzare per specificare il separatore da utilizzare. Il valore predefinito è il carattere virgola. Pertanto, se non specifichi questo argomento, viene utilizzata una virgola come separatore.
number_of_bits Il numero di bit da esaminare. Il valore predefinito è 64. Se fornisci un valore maggiore, questo viene automaticamente ridotto a 64 se maggiore di 64.

Esempio

Ecco un esempio di base:

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

Risultato:

+---------------------------------+
| EXPORT_SET(13,'On','Off',',',4) |
+---------------------------------+
| On,Off,On,On                    |
+---------------------------------+

Possiamo vedere che il primo, il terzo e il quarto bit sono impostati, ma il secondo no.

Possiamo usare il BIN() funzione per restituire un risultato simile, ma in ordine inverso:

SELECT BIN(13);

Risultato:

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

Il BIN() La funzione restituisce una rappresentazione in stringa del valore binario del dato longlong. In questo esempio, ha restituito tre 1 S.

Nel nostro EXPORT_SET() ad esempio, abbiamo specificato che on e off dovrebbe essere usato per rappresentare il 1 e 0 rispettivamente. Possiamo cambiarlo però (sotto).

Inoltre, con EXPORT_SET() , le stringhe vengono aggiunte al risultato da sinistra a destra. Quindi il risultato di EXPORT_SET() sembra un'immagine speculare del risultato di BIN() .

Modifica i valori di attivazione/disattivazione

Eccolo di nuovo, ma questa volta usiamo una stringa diversa per on e off stati.

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

Risultato:

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

Questa volta stiamo usando 1 e 0 , simile a BIN() la funzione ritorna, ma con un separatore aggiunto (e invertito).

Cambia il separatore

Il quarto argomento (facoltativo) specifica quale separatore utilizzare. Eccolo con un separatore diverso:

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

Risultato:

+------------------------------------+
| EXPORT_SET(7,'True','False','-',4) |
+------------------------------------+
| True-True-True-False               |
+------------------------------------+

Modifica il numero di bit da esaminare

Il quinto argomento (opzionale) specifica quanti bit esaminare. Negli esempi precedenti, abbiamo usato 4 come numero di bit da esaminare. Possiamo aumentare questo se vogliamo:

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

Risultato:

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

In questo caso, tutti i bit extra non sono impostati. Aumentiamo il valore del primo argomento per vedere come questo influisce sul risultato:

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

Risultato:

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

Valori predefiniti

Come accennato, il quarto e il quinto argomento sono facoltativi. Quando li ometti, vengono utilizzati i valori predefiniti.

Numero predefinito di bit

Se rimuoviamo l'ultimo argomento, vengono esaminati 64 bit:

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

Risultato:

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

In questo caso ho anche rimosso il separatore per rendere l'output più conciso.

Separatore predefinito

Possiamo anche rimuovere l'argomento separatore. Quando lo facciamo, EXPORT_SET() usa la virgola come separatore predefinito.

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

Risultato:

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

Argomenti nulli

Se uno qualsiasi degli argomenti è null , il risultato è 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";

Risultato:

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

Argomenti mancanti

Chiamando EXPORT_SET() senza passare alcun argomento (o con il numero errato di argomenti) si ottiene un errore:

SELECT EXPORT_SET();

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'EXPORT_SET'