sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona EXPORT_SET() en MariaDB

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'