Понякога може да се наложи да прехвърляте данни като булеви в 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 улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте днес!