1

post_type set('0', '1', '2', '3', '4')0〜4の任意の組み合わせであるという名前の列があります

整数のリストが与えられた場合、どのタイプに一致する行をどのように選択できますか? 私の脳はうんちをしてしまい、適切に説明することさえできませんが、次のようになります。

SELECT * FROM `post_content` WHERE `post_type` IN ('0','1','2');

したがって、次のセットでは、最後のレコードを除くすべてのレコードに一致します

post_type
0,1,3 (matches 0 and 1)
0,3,4 (matches 0)
0,4 (matches 0)
2,3,4 (matches 2)
3,4 (not matched)

どうもありがとう

編集:わかりFIND_IN_SETましたが、避けようとしています:

SELECT * FROM tbl_name WHERE 
FIND_IN_SET(0,post_type)>0 || 
FIND_IN_SET(1,post_type)>0 ||
FIND_IN_SET(2,post_type)>0
4

2 に答える 2

1

通常、FIND_IN_SET() 関数または LIKE 演算子を使用して SET 値を検索します。

mysql> SELECT * FROM tbl_name WHERE FIND_IN_SET('value',set_col)>0;
mysql> SELECT * FROM tbl_name WHERE set_col LIKE '%value%';

ソース: http://dev.mysql.com/doc/refman/5.0/en/set.html


したがって、あなたの例では、次のようになります。

SELECT * FROM post_content 
WHERE FIND_IN_SET(0,post_type)>0
OR FIND_IN_SET(1,post_type)>0   
OR FIND_IN_SET(2,post_type)>0
于 2013-08-09T17:31:06.883 に答える