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'