2016-03-23 12 views
1

のない私は0の結果を返しますfollwing簡単なMySQLのクエリがあります。MySQLの引用符

SELECT d.name FROM document d WHERE 10 IN (d.categories) 

「カテゴリ」はvarchar型のものであり、例えば含まれている「10,20,30」。

私がINの値を入力すると、直接それが動作し、その結果を返します。

SELECT d.name FROM document d WHERE 10 IN ("10,20,30") 
:私はもちろん、私が欲しいものではありません。このようなものでMySQLの代替のd.documentsを疑う

SELECT d.name FROM document d WHERE 10 IN (10,20,30) 

これには適切な回避策はありますか?

答えて

2

はい:

SELECT d.name FROM document d WHERE find_in_set(10, d.categories) > 0 
6

値を "10,20,30"として指定すると、予想される3つの別個の値に対して単一の値として扱われます。この値を3つの異なる値にするには、MySQLでfind_in_set関数を使用する必要があります。

また、私はこのスレッドを通過することができことをお勧め:FIND_IN_SETとIs storing a delimited list in a database column really that bad?

+1

他スレッドへのリンクをありがとう! – Alex

+0

@Alex: - あなたは大歓迎です! –