À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!