表:sometbl
field1|field2|field3
txt1 |txt2 |1,5,7,4
txt3 |txt4 |1,7,8,9
txt5 |txt6 |8,3
如何从some3bl中选择all3,其中field3包含1?
答案 0 :(得分:2)
这不是normalized表格。
您可以使用LIKE
运算符:
SELECT *
FROM sometbl
WHERE field3 LIKE '%1%'
编辑:
这当然也会匹配11
,10
,101
等...
如果你知道1
只能存在于开头,你可以使用:
SELECT *
FROM sometbl
WHERE field3 LIKE '1,%'
OR field3 = '1'
如果1
可以出现在任何地方,这将有效:
SELECT *
FROM sometbl
WHERE field3 LIKE '1,%'
OR field3 LIKE '%,1'
OR field3 LIKE '%,1,%'
OR field3 = '1'
虽然最好的选择是规范化。
答案 1 :(得分:1)
如果以逗号分隔的值是数字而不是数字,则不要仅使用LIKE '%1%'
,它也将包括“5,21”和“14,65”。如果是这种情况,您可以使用像SELECT * FROM sometbl WHERE field3 LIKE '%,1' OR field3 LIKE '%,1,%' OR field3 LIKE '1,%' OR field3 = '1'
这样的hacky。凌乱,但在语义上是正确的。
答案 2 :(得分:0)
如果field3
是文字,请使用the LIKE
operator。
答案 3 :(得分:0)
SELECT *
FROM sometbl
WHERE field3 LIKE '%,1' OR field3 LIKE '1,%' OR field3 LIKE '%,1,%'