Mysql
 sql >> Database >  >> RDS >> Mysql

Come funziona la funzione EXPORT_SET() in MySQL

Il MySQL EXPORT_SET() la funzione restituisce una stringa che rappresenta i bit in un numero.

Hai la possibilità di personalizzare il modo in cui la funzione emette la stringa. La funzione accetta una serie di argomenti che consentono di farlo. Quando chiami la funzione, fornisci il numero in questione e gli argomenti che determinano la modalità di visualizzazione dei risultati.

Sintassi

La sintassi è questa:

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

Ecco una spiegazione degli argomenti:

bit
Questo è il numero per il quale desideri che vengano restituiti i risultati. 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).
su
Questo è ciò che viene restituito per ogni on bit.
disattivato
Questo è ciò che viene restituito per qualsiasi off bit.
separatore
Questo è un argomento facoltativo che puoi usare per specificare il separatore da usare. Il valore predefinito è il carattere virgola. Pertanto, se non specifichi questo argomento, viene utilizzata una virgola come separatore.
numero_di_bit
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 1 – Utilizzo di base

Ecco un esempio per dimostrare l'utilizzo di base di questa funzione.

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

Risultato:

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

Per capire questo risultato, dobbiamo capire come funziona il numero 9 è rappresentato in bit. Per fare ciò, possiamo utilizzare il BIN() funzione per emettere la rappresentazione binaria del numero 9.

SELECT BIN(9);

Risultato:

+--------+
| BIN(9) |
+--------+
| 1001   |
+--------+

Quindi possiamo vedere che la rappresentazione binaria di 9 è 1001 . Ogni 1 è un attivo bit (è impostato) e ogni 0 è un off bit (non è impostato).

Esempio 2:modifica del 2° e 3° argomento

Possiamo prendere l'esempio precedente e cambiare il secondo e il terzo argomento.

SELECT EXPORT_SET(9,'Y','N',',',4);

Risultato:

+-----------------------------+
| EXPORT_SET(9,'Y','N',',',4) |
+-----------------------------+
| Y,N,N,Y                     |
+-----------------------------+

Quindi ora per ogni on bit, otteniamo Y e ciascuno off bit restituisce N .

Potremmo anche cambiarlo in modo che vengano restituiti uno e zero:

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

Risultato:

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

Esempio 3:modifica del 4° argomento (il separatore)

Negli esempi precedenti specifichiamo esplicitamente una virgola come separatore. Questo è anche il valore predefinito.

Possiamo cambiare il separatore in qualcos'altro, se necessario.

SELECT EXPORT_SET(9,1,0,'-',4);

Risultato:

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

Ed ecco cosa succede se specifichiamo la stringa vuota come separatore:

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

Risultato:

+------------------------+
| EXPORT_SET(9,1,0,'',4) |
+------------------------+
| 1001                   |
+------------------------+

Esempio 4:modifica del 5° argomento

Il quinto argomento specifica quanti bit esaminare. Nell'esempio precedente abbiamo usato 4 come valore, quindi sono stati esaminati (e restituiti) solo quattro bit. Possiamo aumentare o diminuire questo come richiesto, specificando un valore diverso come quarto argomento.

SELECT EXPORT_SET(9,1,0,'-',10);

Risultato:

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

In questo esempio abbiamo aumentato il numero di bit esaminati a 10.

Ricorda, i bit vengono esaminati da destra a sinistra, quindi gli zeri extra in questo esempio sono in realtà per gli zeri di ordine superiore. Quindi è in ordine inverso rispetto alla rappresentazione binaria effettiva.

Ecco un esempio per dimostrare cosa intendo:

SELECT 
  BIN(567),
  EXPORT_SET(567,1,0,'',10);

Risultato:

+------------+---------------------------+
| BIN(567)   | EXPORT_SET(567,1,0,'',10) |
+------------+---------------------------+
| 1000110111 | 1110110001                |
+------------+---------------------------+

In questo caso, sembrano immagini speculari. Fondamentalmente, il risultato di EXPORT_SET() è in ordine inverso a BIN() .

Il valore predefinito per il quinto argomento è 64, quindi se omettiamo questo argomento, verranno esaminati quanti bit verranno esaminati.

SELECT EXPORT_SET(9,1,0,'-');

Risultato:

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

Questo viene automaticamente ritagliato a 64, quindi se fornisci un valore al di fuori di questo intervallo, verrà ritagliato a 64.

SELECT EXPORT_SET(9,1,0,'-',500);

Risultato:

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

È un numero intero senza segno, quindi stesso risultato se utilizzi un valore negativo:

SELECT EXPORT_SET(9,1,0,'-',-4);

Risultato:

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

Esempio 5:utilizzo dei valori predefiniti

Possiamo omettere gli ultimi due argomenti per utilizzare i valori predefiniti:

SELECT EXPORT_SET(9,'On','Off');

Risultato:

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| On,Off,Off,On,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+