sql >> Database teknologi >  >> RDS >> Mysql

MySQL Cast som Boolean

Nogle gange skal du muligvis caste data som boolesk i MySQL. Sådan caster du som boolesk i MySQL. Vi vil se på, hvordan man kaster streng som boolesk og kaster int som boolesk.

Sådan caster du som Boolean i MySQL

Her er trinene til at caste som boolesk i MySQL. MySQL giver dig mulighed for at caste data ved hjælp af CAST og CONVERT funktioner. Ingen af ​​dem understøtter dog konvertering til boolesk datatype, uden at boksen. Du skal i stedet caste som UNSIGNED INT. Lad os se på et eksempel på at kaste streng som boolesk

Bonus Læs:MySQL CAST vs CONVERT

Sådan caster du streng som boolesk

Lad os sige, at du har følgende strengkolonne produkt der indeholder strengværdier

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

Lad os sige, at du vil konvertere streng til boolesk, hvor produkt =Sand, hvis det er A else False, så er her SQL-forespørgslen til at caste streng som boolesk.

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

Bemærk venligst i ovenstående forespørgsel,

1. Vi CAST til USIGNED datatype, da hverken CAST eller CONVERT funktioner understøtter direkte konvertering til boolesk datatype

2. MySQL gemmer booleske data som tinyint(1), dvs. 1 eller 0, og ikke True/False-værdier. Da tinyint nemt kan gemmes som usigneret int, konverterer vi streng til usigneret int.

3. Vi bruger et betinget udtryk (produkt='A') inde i castet, hvis output er boolesk. Du kan ikke direkte konvertere en strengkolonne til boolesk ved hjælp af CAST eller CONVERT. Her er det output, du får, hvis du prøver at gøre det.

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

Du kan ændre det betingede udtryk efter behov. Her er f.eks. SQL-forespørgslen, hvis du vil konvertere produkt =A eller produkt =B som sandt, og hvile som falsk.

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

eller du kan også bruge følgende forespørgsel for at få det samme resultat.

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

Sådan kaster du Int som Boolean

Lad os sige, at du har følgende int-kolonne beløb i din tabel.

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

Lad os sige, at du vil konvertere int til boolesk, hvor beløb <200 er Sandt, ellers Falsk. Her er SQL-forespørgslen til at caste int som boolesk.

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

Du kan også bruge MySQL Convert i stedet for MySQL CAST til hver af ovenstående forespørgsler. Her er et eksempel på ovenstående forespørgsel, der bruger MySQL CONVERT.

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

Forhåbentlig kan du nu nemt caste som boolesk i MySQL.

Ubiq gør det nemt at visualisere data på få minutter og overvåge i dashboards i realtid. Prøv det i dag!

  1. hvordan duplikere mine sql resultater?

  2. Antal fredage mellem to datoer

  3. Søg i alle tabeller, alle kolonner for en bestemt værdi SQL Server

  4. Guide til designdatabase til afstemning og undersøgelse i MySQL