Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como a função EXPORT_SET() funciona no MySQL


O MySQL EXPORT_SET() A função retorna uma string que representa os bits em um número.

Você tem a capacidade de personalizar como a função gera a string. A função aceita vários argumentos que permitem fazer isso. Ao chamar a função, você fornece o número em questão, bem como os argumentos que determinam como os resultados são exibidos.


Sintaxe


A sintaxe fica assim:
EXPORT_SET(bits,on,off[,separator[,number_of_bits]])

Segue a explicação dos argumentos:
bits
Este é o número para o qual você deseja que os resultados sejam retornados. Para cada bit definido neste valor, você obtém um on string, e para cada bit que não está definido no valor, você obtém um off fragmento. Os bits são examinados da direita para a esquerda (dos bits de ordem inferior para os de ordem superior).
ligado
Isto é o que é retornado para qualquer on bits.
desligado
Isto é o que é retornado para qualquer desativado bits.
separador
Este é um argumento opcional que você pode usar para especificar o separador a ser usado. O valor padrão é o caractere vírgula. Portanto, se você não especificar esse argumento, uma vírgula será usada como separador.
number_of_bits
O número de bits a serem examinados. O valor padrão é 64. Se você fornecer um valor maior, ele será cortado silenciosamente para 64 se for maior que 64.

Exemplo 1 – Uso básico


Aqui está um exemplo para demonstrar o uso básico desta função.
SELECT EXPORT_SET(9,'Ligado','Desligado',',',4);

Resultado:
+--------------------------------+| EXPORT_SET(9,'Ligado','Desligado',',',4) |+------------------------------ --+| Ligado, Desligado, Desligado, Ligado |+--------------------------------+

Para entender esse resultado, precisamos entender como o número 9 é representado em bits. Para fazer isso, podemos usar o BIN() função para gerar a representação binária do número 9.
SELECIONAR BIN(9);

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

Assim, podemos ver que a representação binária de 9 é 1001 . Cada 1 é um ligado bit (está definido) e cada 0 está desligado bit (não está definido).

Exemplo 2 – Alterar o 2º e 3º Argumentos


Podemos pegar o exemplo anterior e alterar o segundo e o terceiro argumentos.
SELECT EXPORT_SET(9,'S','N',',',4);

Resultado:
+-----------------------------+| EXPORT_SET(9,'S','N',',',4) |+-----------------------------+ | S,N,N,S |+-----------------------------+

Agora, para cada em bit, obtemos Y , e cada desativado bit retorna N .

Podemos até alterá-lo para que uns e zeros sejam retornados:
SELECT EXPORT_SET(9,1,0,',',4);

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

Exemplo 3 – Altere o 4º Argumento (o separador)


Nos exemplos anteriores especificamos explicitamente uma vírgula como sendo o separador. Este também é o valor padrão.

Podemos alterar o separador para outra coisa, se necessário.
SELECT EXPORT_SET(9,1,0,'-',4);

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

E aqui está o que acontece se especificarmos a string vazia como separador:
SELECT EXPORT_SET(9,1,0,'',4);

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

Exemplo 4 – Alterar o 5º argumento


O quinto argumento especifica quantos bits examinar. No exemplo anterior usamos 4 como o valor, então apenas quatro bits foram examinados (e retornados). Podemos aumentar ou diminuir isso conforme necessário, especificando um valor diferente como o quarto argumento.
SELECT EXPORT_SET(9,1,0,'-',10);

Resultado:
+--------------------------+| EXPORT_SET(9,1,0,'-',10) |+--------------------------+| 1-0-0-1-0-0-0-0-0-0 |+--------------------------+ 
Neste exemplo, aumentamos o número de bits examinados para 10.

Lembre-se, os bits são examinados da direita para a esquerda, portanto, os zeros extras neste exemplo são, na verdade, para os zeros de ordem superior. Portanto, está na ordem inversa da representação binária real.

Aqui está um exemplo para demonstrar o que quero dizer:
SELECT BIN(567), EXPORT_SET(567,1,0,'',10);

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

Neste caso, eles se parecem com imagens espelhadas. Basicamente, o resultado de EXPORT_SET() está na ordem inversa de BIN() .

O valor padrão para o quinto argumento é 64, então se omitirmos este argumento, quantos bits serão examinados.
SELECT EXPORT_SET(9,1,0,'-');

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

Isso é cortado silenciosamente para 64, portanto, se você fornecer um valor fora desse intervalo, ele será cortado para 64.
SELECT EXPORT_SET(9,1,0,'-',500);

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

É um inteiro sem sinal, então o mesmo resultado se você usar um valor negativo:
SELECT EXPORT_SET(9,1,0,'-',-4);

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

Exemplo 5 – Usando valores padrão


Podemos omitir os dois últimos argumentos para usar os valores padrão:
SELECT EXPORT_SET(9,'Ligado','Desligado');

Resultado:
+---------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ---------+| Ligado, Desligado, Desligado, Ligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado, Desligado |+--------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----------------------------------+