2010-03-22 26 views
0

我有一个varchar字段与这样的内容:找到一个varchar的元素在另一个VARCHAR

a,b,c,d 
e,d,a,c 
b,q,d,e 

我需要做的是选择只与具有要素领域的行的查询与输入等于串。

前 输入:C,选择的

行:

a,b,c,d 
e,d,a,c 

是可能的,而不使用OR(场像 '%的%' OR字段LIKE '%C%')?

感谢

+1

好像你需要一个在这里不是一个OR,IM好奇,为什么不呢? – medopal 2010-03-22 09:45:47

+0

我同意medopal - 你样本不是很好,两行包含两个字符。无论如何,有人没有正常化该数据库... – Kobi 2010-03-22 09:48:40

回答

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) 
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"%