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'