sql >> データベース >  >> RDS >> Mysql

MySQLキャストをブール値として

    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;
    

    うまくいけば、My​​SQLでブール値として簡単にキャストできるようになりました。

    Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。

    1. 単語と数字の混合文字列の人間化または自然数の並べ替え

    2. SELECTDISTINCTAndroidSQLiteが機能しない

    3. SQLServerセキュリティ関数HAS_Permis_BY_Nameとそのユースケースを理解する

    4. SQLでカウント順に並べ替える方法は?