我想運行是這樣的:我可以在「IN」MySQL語句中使用通配符嗎?
select * from table where field in ("%apple%", "%orange%")
有沒有辦法?或者至少有沒有比動態構建每個關鍵字查詢更好的方法:
select * from table where field like "%apple%" or field like "%orange%"
謝謝。
我想運行是這樣的:我可以在「IN」MySQL語句中使用通配符嗎?
select * from table where field in ("%apple%", "%orange%")
有沒有辦法?或者至少有沒有比動態構建每個關鍵字查詢更好的方法:
select * from table where field like "%apple%" or field like "%orange%"
謝謝。
我不知道這是任何比你來幹什麼了,但你可以使用MySQL's regex capabilities更好:
select * from my_table where field rlike 'apple|orange';
而且,正如其他人所說,你可以使用MySQL's full text search能力(但只有當你使用MyISAM引擎)。
你可能應該看看MySQL's full text indexing,如果這是你想要做的。
也許更好的解決方案是使用boolean search against a fulltext index?
編輯:我看着它,它只是在年底的話支持通配符:
ALTER TABLE table ADD FULLTEXT INDEX (field);
SELECT * FROM table WHERE MATCH (field)
AGAINST ('orange* apple*' IN BOOLEAN MODE);
在Oracle中,你可以這樣做:
select * from table where
regexp_like (column, 'apple|orange', 'i')
可以使用更復雜的正則表達式。 '我'使它不敏感。 請參閱Oracle docs
是的,看起來像最簡單的方法。謝謝。希望它不會影響性能。 – serg 2009-10-30 21:15:56
@ serg555:我不認爲你會得到良好的表現出正則表達式的方法,因爲沒有索引將被使用。我會推薦全文搜索方法。 – Asaph 2009-10-30 21:33:27
是的,但它也有其缺點:只有myisam表,只有一端通配符。 – serg 2009-10-30 22:09:03