1

ユーザーが選択したオプションに関する情報を含む整数を持つmysql列があります。

たとえば、数値 42 = 2 + 8 + 32 = 2^ 1 + 2^ 3 + 2^ 5の場合、オプション = 42 を持つユーザーはオプション 1、3、および 5 を選択します。

(少なくとも) オプション 5 が選択されているすべてのユーザーを選択するにはどうすればよいですか? 正しく機能するSQLクエリは何ですか?

SELECT * FROM `users` WHERE ???(`options`) = ???(5);

前もって感謝します!

4

2 に答える 2

0

IFoptionsは整数型です。次のように、オプションに少なくともビット 5 が設定された行を選択できます。

SELECT * FROM `users` WHERE `options` >= POW(2, 5)

オプションでビット 5 が設定されている列のみを選択するには、次のようにします。

SELECT * FROM `users` WHERE (`options` & POW(2, 5))
于 2013-06-16T14:40:42.753 に答える
0

ビット単位の操作を試してください:

http://dev.mysql.com/doc/refman/5.0/en/bit-functions.html

あなたのコード(MySql)では、条件は次のようになります

SELECT * 
  FROM `users` 
 WHERE (`options` & (1 << 5)) <> 0 
于 2013-06-16T14:43:07.403 に答える