Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL Cast като Boolean

Понякога може да се наложи да прехвърляте данни като булеви в MySQL. Ето как да прехвърляте като булеви в MySQL. Ще разгледаме как да изведем string като булев и int като булев.

Как да прехвърлям като булев в MySQL

Ето стъпките за прехвърляне като булеви в MySQL. MySQL ви позволява да предавате данни с помощта на функциите CAST и CONVERT. Въпреки това, нито един от тях не поддържа преобразуване към булев тип данни, извън кутията. Вместо това трябва да предавате като UNSIGNED INT. Нека разгледаме пример за прехвърляне на низ като булев

Бонус четене:MySQL CAST срещу CONVERT

Как да прехвърляте низ като булев

Да приемем, че имате следната колона низ продукт който съдържа стойности на низове

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

Да кажем, че искате да преобразувате низ в булев, където product =True, ако е A else False, тогава ето SQL заявката за прехвърляне на низ като булев.

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

В горната заявка, моля, имайте предвид,

1. Ние CAST в тип данни UNSIGNED, тъй като нито функциите CAST, нито CONVERT поддържат директно преобразуване към булев тип данни

2. MySQL записва булеви данни като tinyint(1), тоест 1 или 0, а не стойности True/False. Тъй като tinyint може лесно да бъде запазен като unsigned int, ние преобразуваме низ в unsigned int.

3. Ние използваме условен израз (product=’A’) вътре в cast, чийто изход е булев. Не можете директно да конвертирате низ колона в булева, като използвате CAST или CONVERT. Ето изхода, който ще получите, ако се опитате да го направите.

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

Можете да промените условния израз, както ви е необходимо. Например, ето SQL заявката, ако искате да преобразувате product =A  или product =B като истина и да останете като 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 |
+----------------------------------------------+

или можете също да използвате следната заявка, за да получите същия резултат.

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

Как да прехвърлите Int като булев

Да кажем, че имате следната int колона сума във вашата маса.

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

Да приемем, че искате да преобразувате int в булев, където сума<200  е True, иначе False. Ето SQL заявката за прехвърляне на int като булева.

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

Можете също да използвате MySQL Convert вместо MySQL CAST за всяка от горните заявки. Ето пример за горната заявка, използваща MySQL CONVERT.

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

Надяваме се, че сега можете лесно да прехвърляте като булево в MySQL.

Ubiq улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте днес!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на разширени функции на Oracle JDeveloper за MySQL бази данни

  2. Вмъкнете Blobs в MySql бази данни с php

  3. Предоставяне на MySQL разрешения за таблица и колона

  4. Как да импортирате XML файл в таблицата на базата данни MySQL с помощта на XML_LOAD(); функция

  5. Фатална грешка:Неуловена грешка:Извикване на недефинирана функция mysql_connect()