sql >> Database >  >> RDS >> Mysql

MySQL Cast als Booleaans

Soms moet u gegevens als boolean casten in MySQL. Hier leest u hoe u als boolean cast in MySQL. We zullen kijken hoe je string als boolean kunt casten en int als boolean kunt casten.

Hoe te casten als Boolean in MySQL

Hier zijn de stappen om als boolean te casten in MySQL. Met MySQL kunt u gegevens casten met CAST- en CONVERT-functies. Geen van beide ondersteunt echter out-of-the-box conversie naar het booleaanse gegevenstype. U moet in plaats daarvan casten als UNSIGNED INT. Laten we eens kijken naar een voorbeeld om string als boolean te casten

Bonus Lezen:MySQL CAST vs CONVERT

Hoe string als Boolean te casten

Stel dat u de volgende tekenreekskolom product . heeft die tekenreekswaarden bevat

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

Laten we zeggen dat je string wilt converteren naar boolean waarbij product =True als het A else False is, dan is hier de SQL-query om string als boolean te casten.

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

Houd er in de bovenstaande vraag rekening mee,

1. We CAST naar het UNSIGNED datatype aangezien noch CAST noch CONVERT-functies directe conversie naar boolean datatype ondersteunen

2. MySQL slaat booleaanse gegevens op als tinyint(1), dat wil zeggen 1 of 0, en geen True/False-waarden. Aangezien tinyint gemakkelijk kan worden opgeslagen als unsigned int, zetten we string om in unsigned int.

3. We gebruiken een voorwaardelijke uitdrukking (product='A') binnen cast waarvan de uitvoer booleaans is. U kunt een tekenreekskolom niet rechtstreeks naar booleaans converteren met CAST of CONVERT. Dit is de output die je krijgt als je dit probeert.

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

U kunt de voorwaardelijke expressie naar wens wijzigen. Dit is bijvoorbeeld de SQL-query als u product =A  of product =B als waar wilt converteren, en rest als onwaar.

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

of je kunt ook de volgende zoekopdracht gebruiken om hetzelfde resultaat te krijgen.

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

Int casten als Boolean

Laten we zeggen dat u de volgende int kolom bedrag . heeft in uw tafel.

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

Stel dat u int wilt converteren naar boolean waarbij bedrag <200 waar is, anders onwaar. Hier is de SQL-query om int als boolean te casten.

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

U kunt ook MySQL Convert gebruiken in plaats van MySQL CAST voor elk van de bovenstaande vragen. Hier is een voorbeeld van bovenstaande zoekopdracht, met behulp van MySQL CONVERT.

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

Hopelijk kun je nu gemakkelijk als boolean casten in MySQL.

Ubiq maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te controleren. Probeer het vandaag nog!

  1. Huidige tijd in UTC gebruiken als standaardwaarde in PostgreSQL

  2. Hoe kan ik een BEFORE-UPDATED-trigger doen met sql-server?

  3. Equivalent van strftime in Postgres

  4. Is er een SELECT ... INTO OUTFILE-equivalent in SQL Server Management Studio?