2010-11-13 59 views

回答

2

这不是normalized表。

可以使用LIKE操作:

SELECT * 
FROM sometbl 
WHERE field3 LIKE '%1%' 

编辑:

这当然也将匹配1110101等等

如果你知道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' 

虽然最好的选择就是标准化。

+0

LIKE'%1%'将匹配10 – 2010-11-13 09:43:27

+0

但是,这将选择和101,对不对? – lam3r4370 2010-11-13 09:44:05

+1

然后使用:'where field3 LIKE'%1,%'' - 更好的是:使表格正常化! – 2010-11-13 09:44:24

0
SELECT * 
FROM sometbl 
WHERE field3 LIKE '%,1' OR field3 LIKE '1,%' OR field3 LIKE '%,1,%' 
+0

否,不起作用。 – Constantin 2010-11-13 09:48:28

+0

^^哎呀,更新.. – Dienekes 2010-11-13 09:50:25

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。凌乱,但语义上正确。

+0

但无论如何,最好花一些时间来规范化数据库,这将为您节省大量时间和精力 – Dyppl 2010-11-13 09:48:08