表: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