0

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

谢谢

4

2 回答 2

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)
于 2010-03-22T09:47:10.733 回答
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"%

于 2010-03-22T09:47:41.110 回答