Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL convertido como booleano


Às vezes você pode precisar converter dados como booleanos no MySQL. Veja como converter como booleano no MySQL. Veremos como converter string como boolean e converter int como boolean.


Como transmitir como booleano no MySQL


Aqui estão as etapas para converter como booleano no MySQL. O MySQL permite que você converta dados usando as funções CAST e CONVERT. No entanto, nenhum deles oferece suporte à conversão para o tipo de dados booleano, pronto para uso. Você precisa lançar como UNSIGNED INT, em vez disso. Vejamos um exemplo para converter string como booleano



Bônus de leitura:MySQL CAST vs CONVERT


Como converter string como booleana


Digamos que você tenha a seguinte coluna de string produto que contém valores de string
mysql> select product from product_orders;
+---------+
| product |
+---------+
| A       |
| B       |
| C       |
| A       |
| B       |
| C       |
| A       |
| B       |
| C       |
+---------+

Digamos que você queira converter string em booleano onde product =True se for A else False, então aqui está a consulta SQL para converter string como boolean.
mysql> select cast(product='A' as unsigned) from product_orders;
+-------------------------------+
| cast(product='A' as unsigned) |
+-------------------------------+
|                             1 |
|                             0 |
|                             0 |
|                             1 |
|                             0 |
|                             0 |
|                             1 |
|                             0 |
|                             0 |
+-------------------------------+

Na consulta acima, observe,

1. CAST em tipo de dados UNSIGNED, pois nem as funções CAST nem CONVERT suportam a conversão direta para o tipo de dados booleano

2. O MySQL salva dados booleanos como tinyint(1) ou seja, 1 ou 0, e não valores True/False. Como tinyint pode ser facilmente salvo como unsigned int, convertemos string em unsigned int.

3. Usamos uma expressão condicional (product='A') dentro do cast cuja saída é booleana. Você não pode converter diretamente uma coluna de string em booleano usando CAST ou CONVERT. Aqui está a saída que você obterá se tentar fazê-lo.
mysql> select cast(product as unsigned) from product_orders;
+---------------------------+
| cast(product as unsigned) |
+---------------------------+
|                         0 |
|                         0 |
|                         0 |
|                         0 |
|                         0 |
|                         0 |
|                         0 |
|                         0 |
|                         0 |
+---------------------------+



Você pode modificar a expressão condicional conforme necessário. Por exemplo, aqui está a consulta SQL se você quiser converter product =A  ou product =B como true e restar como false.
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 |
+----------------------------------------------+

ou você também pode usar a seguinte consulta para obter o mesmo resultado.
mysql> select cast(product in ('A','B') as unsigned) from product_orders;


Como converter int como booleano


Digamos que você tenha a seguinte coluna int quantidade na sua mesa.
mysql> select amount from product_orders;
+--------+
| amount |
+--------+
|    250 |
|    150 |
|    200 |
|    250 |
|    210 |
|    125 |
|    350 |
|    225 |
|    150 |
+--------+

Digamos que você queira converter int em booleano, em que valor<200 é True, caso contrário, False. Aqui está a consulta SQL para converter 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 |
+------------------------------+

Você também pode usar o MySQL Convert no lugar do MySQL CAST para cada uma das consultas acima. Aqui está um exemplo da consulta acima, usando MySQL CONVERT.
mysql> select convert(amount<200, unsigned) from product_orders;



Espero que agora você possa facilmente converter como booleano no MySQL.

A Ubiq facilita a visualização de dados em minutos e o monitoramento em painéis em tempo real. Experimente hoje!