表:sometbl如何建立这个sql查询
field1|field2|field3
txt1 |txt2 |1,5,7,4
txt3 |txt4 |1,7,8,9
txt5 |txt6 |8,3
如何从sometbl其中Field3包含1选择呢?
表:sometbl如何建立这个sql查询
field1|field2|field3
txt1 |txt2 |1,5,7,4
txt3 |txt4 |1,7,8,9
txt5 |txt6 |8,3
如何从sometbl其中Field3包含1选择呢?
这不是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'
虽然最好的选择就是标准化。
如果field3
是文字,请使用the LIKE
operator。
SELECT *
FROM sometbl
WHERE field3 LIKE '%,1' OR field3 LIKE '1,%' OR field3 LIKE '%,1,%'
否,不起作用。 – Constantin 2010-11-13 09:48:28
^^哎呀,更新.. – Dienekes 2010-11-13 09:50:25
如果逗号分隔值是数字,而不是数字,不要只使用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。凌乱,但语义上正确。
但无论如何,最好花一些时间来规范化数据库,这将为您节省大量时间和精力 – Dyppl 2010-11-13 09:48:08
LIKE'%1%'将匹配10 – 2010-11-13 09:43:27
但是,这将选择和101,对不对? – lam3r4370 2010-11-13 09:44:05
然后使用:'where field3 LIKE'%1,%'' - 更好的是:使表格正常化! – 2010-11-13 09:44:24