En MariaDB, EXPORT_SET()
es una función de cadena integrada que devuelve una cadena que refleja los bits en el valor especificado. Por cada bit establecido en el valor especificado, obtiene una cadena "activada" y por cada bit no establecido en el valor, obtiene una cadena "desactivada".
Acepta un mínimo de tres argumentos, más dos argumentos opcionales.
Sintaxis
La sintaxis es así:
EXPORT_SET(bits, on, off[, separator[, number_of_bits]])
La siguiente tabla proporciona una explicación de esos argumentos.
bits | El valor para el que desea que se devuelvan los resultados. Se proporciona como un número entero, pero se convierte en bits. Por cada bit que se establece en este valor, obtiene un encendido cadena, y por cada bit que no está establecido en el valor, obtiene un apagado cuerda. Los bits se examinan de derecha a izquierda (desde los bits de orden inferior a los de orden superior). |
on | La cadena que se devuelve para cualquier on bits. |
off | La cadena que se devuelve para cualquier off bits. |
separator | Argumento opcional que puede usar para especificar el separador a usar. El valor predeterminado es el carácter de coma. Por lo tanto, si no especifica este argumento, se usa una coma como separador. |
number_of_bits | El número de bits a examinar. El valor predeterminado es 64. Si proporciona un valor mayor, este se recorta silenciosamente a 64 si es mayor que 64. |
Ejemplo
He aquí un ejemplo básico:
SELECT EXPORT_SET(13,'On','Off',',',4);
Resultado:
+---------------------------------+ | EXPORT_SET(13,'On','Off',',',4) | +---------------------------------+ | On,Off,On,On | +---------------------------------+
Podemos ver que los bits primero, tercero y cuarto están establecidos, pero el segundo no.
Podemos usar el BIN()
función para devolver un resultado similar, pero en orden inverso:
SELECT BIN(13);
Resultado:
+---------+ | BIN(13) | +---------+ | 1101 | +---------+
El BIN()
La función devuelve una representación de cadena del valor binario del longlong dado. En este ejemplo, devolvió tres 1
s.
En nuestro EXPORT_SET()
ejemplo, especificamos que on
y off
debe usarse para representar el 1
y 0
respectivamente. Sin embargo, podemos cambiar eso (abajo).
Además, con EXPORT_SET()
, las cadenas se agregan al resultado de izquierda a derecha. Por lo tanto, el resultado de EXPORT_SET()
parece una imagen especular del resultado de BIN()
.
Cambiar los valores de encendido/apagado
Aquí está de nuevo, pero esta vez usamos una cadena diferente para on
y off
estados.
SELECT EXPORT_SET(7,'1','0',',',4);
Resultado:
+-----------------------------+ | EXPORT_SET(7,'1','0',',',4) | +-----------------------------+ | 1,1,1,0 | +-----------------------------+
Esta vez estamos usando 1
y 0
, similar a lo que BIN()
la función regresa, pero con un separador agregado (y al revés).
Cambiar el Separador
El cuarto argumento (opcional) especifica qué separador usar. Aquí está con un separador diferente:
SELECT EXPORT_SET(7,'True','False','-',4);
Resultado:
+------------------------------------+ | EXPORT_SET(7,'True','False','-',4) | +------------------------------------+ | True-True-True-False | +------------------------------------+
Cambiar el Número de Bits a Examinar
El quinto argumento (opcional) especifica cuántos bits examinar. En los ejemplos anteriores, usamos 4 como el número de bits a examinar. Podemos aumentar esto si queremos:
SELECT EXPORT_SET(7,'1','0',',',10);
Resultado:
+------------------------------+ | EXPORT_SET(7,'1','0',',',10) | +------------------------------+ | 1,1,1,0,0,0,0,0,0,0 | +------------------------------+
En este caso, no se establecen todos los bits adicionales. Aumentemos el valor del primer argumento para ver cómo afecta esto al 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 predeterminados
Como se mencionó, los argumentos cuarto y quinto son opcionales. Cuando los omite, se utilizan los valores predeterminados.
Número predeterminado de bits
Si eliminamos el último argumento, se examinan 64 bits:
SELECT EXPORT_SET(172,'1','0','');
Resultado:
+------------------------------------------------------------------+ | EXPORT_SET(172,'1','0','') | +------------------------------------------------------------------+ | 0011010100000000000000000000000000000000000000000000000000000000 | +------------------------------------------------------------------+
En este caso, también eliminé el separador para que la salida sea más concisa.
Separador predeterminado
También podemos eliminar el argumento del separador. Cuando hacemos esto, EXPORT_SET()
utiliza la coma como separador predeterminado.
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
Si alguno de los argumentos es null
, el resultado es 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 faltantes
Llamando a EXPORT_SET()
sin pasar ningún argumento (o con el número incorrecto de argumentos) da como resultado un error:
SELECT EXPORT_SET();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'EXPORT_SET'