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'