Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL Cast jako Boolean

Czasami może zajść potrzeba rzutowania danych w MySQL jako wartości logicznej. Oto jak rzucać jako boolean w MySQL. Przyjrzymy się, jak rzutować string jako boolean, a int jako boolean.

Jak przesyłać jako Boolean w MySQL

Oto kroki, jak rzutować jako wartość logiczną w MySQL. MySQL umożliwia przesyłanie danych za pomocą funkcji CAST i CONVERT. Jednak żaden z nich nie obsługuje konwersji na typ danych binarnych, po wyjęciu z pudełka. Zamiast tego musisz rzucić jako UNSIGNED INT. Przyjrzyjmy się przykładowi rzutowania łańcucha jako logicznego

Przeczytaj bonus:MySQL CAST vs CONVERT

Jak rzucić ciąg jako Boolean

Załóżmy, że masz następującą kolumnę ciągu produkt który zawiera wartości ciągów

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

Powiedzmy, że chcesz przekonwertować ciąg znaków na wartość logiczną, gdzie iloczyn =True, jeśli jest to A else False, oto zapytanie SQL, które rzutuje łańcuch jako wartość logiczną.

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

W powyższym zapytaniu zwróć uwagę,

1. CAST do typu danych UNSIGNED, ponieważ ani funkcje CAST, ani CONVERT nie obsługują bezpośredniej konwersji na typ danych binarnych

2. MySQL zapisuje dane logiczne jako tinyint(1), czyli 1 lub 0, a nie wartości True/False. Ponieważ tinyint można łatwo zapisać jako unsigned int, konwertujemy string na unsigned int.

3. Używamy wyrażenia warunkowego (product=’A’) wewnątrz rzutowania, którego wyjście jest logiczne. Nie można bezpośrednio przekonwertować kolumny ciągu na wartość logiczną za pomocą funkcji CAST lub CONVERT. Oto wynik, który otrzymasz, jeśli spróbujesz to zrobić.

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

Wyrażenie warunkowe można modyfikować według potrzeb. Na przykład oto zapytanie SQL, jeśli chcesz przekonwertować produkt =A  lub produkt =B na prawdę, a resztę na fałsz.

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

lub możesz również użyć następującego zapytania, aby uzyskać ten sam wynik.

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

Jak rzucać Int jako Boolean

Powiedzmy, że masz następującą kolumnę int kwota w twoim stole.

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

Załóżmy, że chcesz przekonwertować int na wartość logiczną, gdzie kwota<200 to prawda, w przeciwnym razie fałsz. Oto zapytanie SQL do rzutowania int jako wartości logicznej.

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

Możesz również użyć MySQL Convert zamiast MySQL CAST dla każdego z powyższych zapytań. Oto przykład powyższego zapytania z użyciem MySQL CONVERT.

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

Mam nadzieję, że teraz możesz łatwo przesyłać jako logiczne w MySQL.

Ubiq ułatwia wizualizację danych w ciągu kilku minut i monitorowanie w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj już dziś!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie strtotime dla dat sprzed 1970

  2. Różnica w miesiącach między datami w MySQL

  3. Klauzula OUTPUT w MySQL

  4. MySQL aktualizuje połączoną tabelę

  5. Przechowywanie obrazu bezpośrednio w bazie danych czy jako dane base64?