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

MySQL emitido como booleano

A veces, es posible que necesite convertir datos como booleanos en MySQL. Aquí se explica cómo emitir como booleano en MySQL. Veremos cómo convertir string como booleano y convertir int como booleano.

Cómo transmitir como booleano en MySQL

Estos son los pasos para emitir como booleano en MySQL. MySQL le permite emitir datos utilizando las funciones CAST y CONVERT. Sin embargo, ninguno de ellos admite la conversión al tipo de datos booleano, de forma inmediata. En su lugar, debes lanzar como UNSIGNED INT. Veamos un ejemplo para convertir una cadena como booleana

Lectura adicional:MySQL CAST vs CONVERT

Cómo convertir cadenas como booleanas

Supongamos que tiene la siguiente columna de cadena producto que contiene valores de cadena

mysql> select product from product_orders;
+---------+
| product |
+---------+
| A       |
| B       |
| C       |
| A       |
| B       |
| C       |
| A       |
| B       |
| C       |
+---------+

Digamos que desea convertir una cadena en booleana donde producto =Verdadero si es A más Falso, entonces aquí está la consulta SQL para convertir una cadena en booleana.

mysql> select cast(product='A' as unsigned) from product_orders;
+-------------------------------+
| cast(product='A' as unsigned) |
+-------------------------------+
|                             1 |
|                             0 |
|                             0 |
|                             1 |
|                             0 |
|                             0 |
|                             1 |
|                             0 |
|                             0 |
+-------------------------------+

En la consulta anterior, tenga en cuenta,

1. CAST al tipo de datos UNSIGNED ya que ni las funciones CAST ni CONVERT admiten la conversión directa al tipo de datos booleano

2. MySQL guarda los datos booleanos como tinyint(1), es decir, 1 o 0, y no valores verdaderos o falsos. Dado que tinyint se puede guardar fácilmente como unsigned int, convertimos la cadena en unsigned int.

3. Usamos una expresión condicional (producto ='A') dentro de cast cuya salida es booleana. No puede convertir directamente una columna de cadena en booleana usando CAST o CONVERT. Este es el resultado que obtendrá si intenta hacerlo.

mysql> select cast(product as unsigned) from product_orders;
+---------------------------+
| cast(product as unsigned) |
+---------------------------+
|                         0 |
|                         0 |
|                         0 |
|                         0 |
|                         0 |
|                         0 |
|                         0 |
|                         0 |
|                         0 |
+---------------------------+

Puede modificar la expresión condicional según lo necesite. Por ejemplo, aquí está la consulta SQL si desea convertir el producto =A  o el producto =B como verdadero y el resto como falso.

mysql> select cast(product='A' or product='B' as unsigned) from product_orders;
+----------------------------------------------+
| cast(product='A' or product='B' as unsigned) |
+----------------------------------------------+
|                                            1 |
|                                            1 |
|                                            0 |
|                                            1 |
|                                            1 |
|                                            0 |
|                                            1 |
|                                            1 |
|                                            0 |
+----------------------------------------------+

o también puede usar la siguiente consulta para obtener el mismo resultado.

mysql> select cast(product in ('A','B') as unsigned) from product_orders;

Cómo convertir Int como booleano

Digamos que tiene la siguiente columna int cantidad en tu mesa.

mysql> select amount from product_orders;
+--------+
| amount |
+--------+
|    250 |
|    150 |
|    200 |
|    250 |
|    210 |
|    125 |
|    350 |
|    225 |
|    150 |
+--------+

Supongamos que desea convertir int en booleano donde cantidad <200 es verdadero, de lo contrario, falso. Aquí está la consulta SQL para convertir int como booleano.

mysql> select cast(amount<200 as unsigned) from product_orders;
+------------------------------+
| cast(amount<200 as unsigned) |
+------------------------------+
|                            0 |
|                            1 |
|                            0 |
|                            0 |
|                            0 |
|                            1 |
|                            0 |
|                            0 |
|                            1 |
+------------------------------+

También puede usar MySQL Convert en lugar de MySQL CAST para cada una de las consultas anteriores. Aquí hay un ejemplo de la consulta anterior, usando MySQL CONVERT.

mysql> select convert(amount<200, unsigned) from product_orders;

Con suerte, ahora puede convertir fácilmente como booleano en MySQL.

Ubiq facilita la visualización de datos en minutos y la supervisión en paneles en tiempo real. ¡Pruébalo hoy!