我有一个varchar字段,其内容如下:
a,b,c,d
e,d,a,c
b,q,d,e
我需要执行一个查询,只选择具有元素等于输入字符串的字段的行。
离 输入:c,a
选择的行:
a,b,c,d
e,d,a,c
是可以的,不使用OR('%a%'字段,如'%c%')?
感谢
答案 0 :(得分:2)
是的,你可以使用......
WHERE
myField LIKE '%a%' AND myField LIKE '%c%'
但是,这听起来好像你的SQL中有一个讨厌的字段。
通常,您可以使用链接表来指定此类信息:
Table1
id
otherdata...
Table2
id
letter
LinkTable
Table1Id
Table2Id
因此,在LinkTable中,您将有许多链接记录的条目。因此,不是在字段中存储“a,b,c,d”,而是有四个链接记录:
Table1Id Table2Id
1 1 (a)
1 2 (b)
1 3 (c)
1 4 (d)
答案 1 :(得分:0)
是的,但您需要一个技巧:创建第二列,其中包含相同的值,但已排序:
a,b,c,d
a,c,d,e
b,d,e,q
现在,您可以查询%a%c%
如果查询字符串可以是任何不需要的值的子字符串,则无效。如果是这种情况,您需要引号:
"a","b","c","d"
"a","c","d","e"
"b","d","e","q"
并查询%"a"%"c"%