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 deEXPORT_SET()
está na ordem inversa deBIN()
.
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 |+--------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----------------------------------+