MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como EXPORT_SET() funciona no MariaDB


No MariaDB, EXPORT_SET() é uma função de string interna que retorna uma string que reflete os bits no valor especificado. Para cada bit definido no valor especificado, você obtém uma string “on” e para cada bit não definido no valor, você obtém uma string “off”.

Ele aceita um mínimo de três argumentos, mais dois argumentos opcionais.

Sintaxe


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

A tabela a seguir fornece uma explicação desses argumentos.
bits O valor para o qual você deseja que os resultados sejam retornados. Fornecido como um número inteiro, mas é convertido em bits. 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).
on A string que é retornada para qualquer on bits.
off A string que é retornada para qualquer off bits.
separator 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


Segue um exemplo básico:
SELECT EXPORT_SET(13,'On','Off',',',4);

Resultado:
+---------------------------------+
| EXPORT_SET(13,'On','Off',',',4) |
+---------------------------------+
| On,Off,On,On                    |
+---------------------------------+

Podemos ver que o primeiro, terceiro e quarto bits estão definidos, mas o segundo não.

Podemos usar o BIN() função para retornar um resultado semelhante, mas na ordem inversa:
SELECT BIN(13);

Resultado:
+---------+
| BIN(13) |
+---------+
| 1101    |
+---------+

O BIN() A função retorna uma representação de string do valor binário do longlong fornecido. Neste exemplo, ele retornou três 1 s.

Em nosso EXPORT_SET() Por exemplo, especificamos que on e off deve ser usado para representar o 1 e 0 respectivamente. Podemos mudar isso (abaixo).

Além disso, com EXPORT_SET() , as strings são adicionadas ao resultado da esquerda para a direita. Portanto, o resultado de EXPORT_SET() parece uma imagem espelhada do resultado de BIN() .

Alterar os valores de ativação/desativação


Aqui está novamente, mas desta vez usamos uma string diferente para o on e off estados.
SELECT EXPORT_SET(7,'1','0',',',4);

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

Desta vez, estamos usando 1 e 0 , semelhante ao que o BIN() função retorna, mas com um separador adicionado (e invertido).

Alterar o separador


O quarto argumento (opcional) especifica qual separador usar. Aqui está com um separador diferente:
SELECT EXPORT_SET(7,'True','False','-',4);

Resultado:
+------------------------------------+
| EXPORT_SET(7,'True','False','-',4) |
+------------------------------------+
| True-True-True-False               |
+------------------------------------+

Alterar o número de bits a serem examinados


O quinto argumento (opcional) especifica quantos bits examinar. Nos exemplos anteriores, usamos 4 como o número de bits a serem examinados. Podemos aumentar isso se quisermos:
SELECT EXPORT_SET(7,'1','0',',',10);

Resultado:
+------------------------------+
| EXPORT_SET(7,'1','0',',',10) |
+------------------------------+
| 1,1,1,0,0,0,0,0,0,0          |
+------------------------------+

Nesse caso, todos os bits extras não são definidos. Vamos aumentar o valor do primeiro argumento para ver como isso afeta o resultado:
SELECT EXPORT_SET(172,'1','0',',',10);

Resultado:
+--------------------------------+
| EXPORT_SET(172,'1','0',',',10) |
+--------------------------------+
| 0,0,1,1,0,1,0,1,0,0            |
+--------------------------------+

Valores padrão


Como mencionado, o quarto e quinto argumentos são opcionais. Quando você os omite, os valores padrão são usados.

Número padrão de bits


Se removermos o último argumento, 64 bits são examinados:
SELECT EXPORT_SET(172,'1','0','');

Resultado:
+------------------------------------------------------------------+
| EXPORT_SET(172,'1','0','')                                       |
+------------------------------------------------------------------+
| 0011010100000000000000000000000000000000000000000000000000000000 |
+------------------------------------------------------------------+

Nesse caso, também removi o separador para tornar a saída mais concisa.

Separador padrão


Também podemos remover o argumento separador. Quando fazemos isso, EXPORT_SET() usa a vírgula como separador padrão.
SELECT EXPORT_SET(123456789,'1','0');

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


Argumentos nulos


Se algum dos argumentos for null , o resultado é 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";

Resultado:
+------+------+------+------+------+
| 1    | 2    | 3    | 4    | 5    |
+------+------+------+------+------+
| NULL | NULL | NULL | NULL | NULL |
+------+------+------+------+------+

Argumentos ausentes


Chamando EXPORT_SET() sem passar nenhum argumento (ou com o número errado de argumentos) resulta em um erro:
SELECT EXPORT_SET();

Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'EXPORT_SET'