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

0と1で構成される長い数値を格納するのに最適なデータ型

    表示しているのは2進数です

    • 0000000 =0
    • 0000001 =2 ^ 0 =1
    • 0000010 =2 ^ 1 =2
    • 0000011 =2 ^ 0 + 2 ^ 1 =3

    したがって、これらの数値を整数データ型に格納するだけです(もちろん、ビットとともに内部的に格納されます)。これには、ビット演算のドキュメントで推奨されているように、BIGINTを使用できます( http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html

    フラグnを設定する方法は次のとおりです:

    UPDATE mytable
    SET bitmask = POW(2, n-1)
    WHERE id = 12345;
    

    フラグを追加する方法は次のとおりです。

    UPDATE mytable
    SET bitmask = bitmask | POW(2, n-1)
    WHERE id = 12345;
    

    フラグを確認する方法は次のとおりです。

    SELECT *
    FROM mytable
    WHERE bitmask & POW(2, n-1)
    

    ただし、コメントで述べたように、リレーショナルデータベースでは、通常、エンコードされたフラグリストではなく、列とテーブルを使用して属性とリレーションを表示します。



    1. MySQLサンプルデータベース

    2. PythonMySQLdb更新クエリが失敗する

    3. SQLチャレンジ/パズル:スタックトレースが与えられた場合-各時点で最上位の要素を見つける方法は?

    4. 列名のSQLクエリでPythonリストを使用する