2010-11-13 58 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