sql >> Base de Datos >  >> RDS >> Mysql

Cómo funciona la función EXPORT_SET() en MySQL

El MySQL EXPORT_SET() La función devuelve una cadena que representa los bits de un número.

Tiene la capacidad de personalizar cómo la función genera la cadena. La función acepta una serie de argumentos que le permiten hacer esto. Cuando llama a la función, proporciona el número en cuestión, así como los argumentos que determinan cómo se muestran los resultados.

Sintaxis

La sintaxis es así:

EXPORT_SET(bits,on,off[,separator[,number_of_bits]])

Aquí hay una explicación de los argumentos:

bits
Este es el número para el que desea obtener los resultados. 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 (de menor a mayor orden).
activado
Esto es lo que se devuelve para cualquier on bits.
apagado
Esto es lo que se devuelve para cualquier off bits.
separador
Este es un 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.
número_de_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 1:uso básico

Aquí hay un ejemplo para demostrar el uso básico de esta función.

SELECT EXPORT_SET(9,'On','Off',',',4);

Resultado:

+--------------------------------+
| EXPORT_SET(9,'On','Off',',',4) |
+--------------------------------+
| On,Off,Off,On                  |
+--------------------------------+

Para entender este resultado, necesitamos entender cómo el número 9 se representa en bits. Para hacer esto, podemos usar el BIN() función para generar la representación binaria del número 9.

SELECT BIN(9);

Resultado:

+--------+
| BIN(9) |
+--------+
| 1001   |
+--------+

Entonces podemos ver que la representación binaria de 9 es 1001 . Cada 1 es un encendido bit (está configurado) y cada 0 es un apagado bit (no está configurado).

Ejemplo 2:cambiar los argumentos 2 y 3

Podemos tomar el ejemplo anterior y cambiar el segundo y tercer argumento.

SELECT EXPORT_SET(9,'Y','N',',',4);

Resultado:

+-----------------------------+
| EXPORT_SET(9,'Y','N',',',4) |
+-----------------------------+
| Y,N,N,Y                     |
+-----------------------------+

Así que ahora para cada on poco, obtenemos Y , y cada uno apagado bit devuelve N .

Incluso podríamos cambiarlo para que devuelva unos y ceros:

SELECT EXPORT_SET(9,1,0,',',4);

Resultado:

+-------------------------+
| EXPORT_SET(9,1,0,',',4) |
+-------------------------+
| 1,0,0,1                 |
+-------------------------+

Ejemplo 3:cambie el cuarto argumento (el separador)

En los ejemplos anteriores especificamos explícitamente una coma como separador. Este es también el valor predeterminado.

Podemos cambiar el separador a otra cosa si es necesario.

SELECT EXPORT_SET(9,1,0,'-',4);

Resultado:

+-------------------------+
| EXPORT_SET(9,1,0,'-',4) |
+-------------------------+
| 1-0-0-1                 |
+-------------------------+

Y esto es lo que sucede si especificamos la cadena vacía como separador:

SELECT EXPORT_SET(9,1,0,'',4);

Resultado:

+------------------------+
| EXPORT_SET(9,1,0,'',4) |
+------------------------+
| 1001                   |
+------------------------+

Ejemplo 4:cambiar el quinto argumento

El quinto argumento especifica cuántos bits examinar. En el ejemplo anterior usamos 4 como valor, por lo que solo se examinaron (y se devolvieron) cuatro bits. Podemos aumentar o disminuir esto según sea necesario, especificando un valor diferente como el cuarto 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      |
+--------------------------+

En este ejemplo, aumentamos el número de bits examinados a 10.

Recuerde, los bits se examinan de derecha a izquierda, por lo que los ceros adicionales en este ejemplo son en realidad para los ceros de orden superior. Así que está en orden inverso a la representación binaria real.

Aquí hay un ejemplo para demostrar lo que quiero decir:

SELECT 
  BIN(567),
  EXPORT_SET(567,1,0,'',10);

Resultado:

+------------+---------------------------+
| BIN(567)   | EXPORT_SET(567,1,0,'',10) |
+------------+---------------------------+
| 1000110111 | 1110110001                |
+------------+---------------------------+

En este caso, parecen imágenes especulares. Básicamente, el resultado de EXPORT_SET() está en orden inverso a BIN() .

El valor predeterminado para el quinto argumento es 64, por lo que si omitimos este argumento, esa es la cantidad de bits que se examinarán.

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

Esto se recorta silenciosamente a 64, por lo que si proporciona un valor fuera de este rango, se recorta a 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 |
+---------------------------------------------------------------------------------------------------------------------------------+

Es un número entero sin signo, por lo que el mismo resultado si usa un 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 |
+---------------------------------------------------------------------------------------------------------------------------------+

Ejemplo 5:uso de valores predeterminados

Podemos omitir los dos últimos argumentos para usar los valores predeterminados:

SELECT EXPORT_SET(9,'On','Off');

Resultado:

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| On,Off,Off,On,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off,Off |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+