在另一个varchar中查找varchar的元素

时间:2010-03-22 09:40:38

标签: mysql where-clause varchar

我有一个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%')?

感谢

2 个答案:

答案 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"%