我有一个 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%' 的字段)?
谢谢
我有一个 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%' 的字段)?
谢谢
是的,您可以使用...
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)
是的,但您需要一个技巧:创建包含相同值但已排序的第二列:
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"%