MySQLでブール値としてデータをキャストする必要がある場合があります。 MySQLでブール値としてキャストする方法は次のとおりです。文字列をブール値としてキャストし、intをブール値としてキャストする方法を見ていきます。
MySQLでブール値としてキャストする方法
MySQLでブール値としてキャストする手順は次のとおりです。 MySQLでは、CAST関数とCONVERT関数を使用してデータをキャストできます。ただし、どちらも、すぐに使用できるブールデータ型への変換をサポートしていません。代わりに、UNSIGNEDINTとしてキャストする必要があります。文字列をブール値としてキャストする例を見てみましょう
ボーナスリード:MySQL CAST vs CONVERT
文字列をブール値としてキャストする方法
次の文字列列productがあるとします。 文字列値を含む
mysql> select product from product_orders; +---------+ | product | +---------+ | A | | B | | C | | A | | B | | C | | A | | B | | C | +---------+
文字列をブール値に変換するとします。ここで、product=Trueの場合はAelseFalseの場合、文字列をブール値としてキャストする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関数もCONVERT関数もブールデータ型への直接変換をサポートしていないため、UNSIGNEDデータ型にキャストします
2. MySQLは、ブールデータをtinyint(1)、つまり1または0として保存し、True/False値ではありません。 tinyintはunsignedintとして簡単に保存できるため、文字列をunsignedintに変換します。
3.出力がブール値であるキャスト内で条件式(product =’A’)を使用します。 CASTまたはCONVERTを使用して、文字列列をブール値に直接変換することはできません。これを実行しようとすると、次のような出力が得られます。
mysql> select cast(product as unsigned) from product_orders; +---------------------------+ | cast(product as unsigned) | +---------------------------+ | 0 | | 0 | | 0 | | 0 | | 0 | | 0 | | 0 | | 0 | | 0 | +---------------------------+
必要に応じて条件式を変更できます。たとえば、product=Aまたはproduct=Bをtrueに変換し、falseとして残りたい場合のSQLクエリは次のとおりです。
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列amountがあるとします。 あなたのテーブルに。
mysql> select amount from product_orders; +--------+ | amount | +--------+ | 250 | | 150 | | 200 | | 250 | | 210 | | 125 | | 350 | | 225 | | 150 | +--------+
たとえば、intをbooleanに変換し、amount <200がTrueの場合、それ以外の場合はFalseに変換するとします。 intをブール値としてキャストするSQLクエリは次のとおりです。
mysql> select cast(amount<200 as unsigned) from product_orders; +------------------------------+ | cast(amount<200 as unsigned) | +------------------------------+ | 0 | | 1 | | 0 | | 0 | | 0 | | 1 | | 0 | | 0 | | 1 | +------------------------------+
上記の各クエリに対して、MySQLCASTの代わりにMySQLConvertを使用することもできます。これは、MySQLCONVERTを使用した上記のクエリの例です。
mysql> select convert(amount<200, unsigned) from product_orders;
うまくいけば、MySQLでブール値として簡単にキャストできるようになりました。
Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。