我想查找具有特定名稱的行。問題是,一些行有一個前綴:"(OBSOLETE)"
或"(OBSOLETE) "
SQL查找列所在行的行
所以對於名字約翰,我可以有三行:
John
(OBSOLETE)John
(OBSOLETE) John
我將如何編寫一個查詢,這樣我可以找到所有的與該名稱匹配的行知道有時前綴將在那裏,我也想要那些?
我想查找具有特定名稱的行。問題是,一些行有一個前綴:"(OBSOLETE)"
或"(OBSOLETE) "
SQL查找列所在行的行
所以對於名字約翰,我可以有三行:
John
(OBSOLETE)John
(OBSOLETE) John
我將如何編寫一個查詢,這樣我可以找到所有的與該名稱匹配的行知道有時前綴將在那裏,我也想要那些?
你能在LIKE語句中使用SQL通配符嗎?
SELECT * FROM Customers WHERE Name LIKE '%John';
要還不匹配BillyJohn:
select
*
from T
where ltrim(replace(fld, '(OBSOLETE)', '')) = 'John'
或者乾脆:
where fld IN ('John', '(OBSOLETE) John', '(OBSOLETE)John')
它不像上面(或LIKE
用鉛通配符)有機會使用應索引一個存在。
Alex,謝謝你的回答。如果這個名字帶有兩個詞,比如「John Smit」,這會起作用嗎?我認爲你正在取代空間。 –
它只替換單詞之間的空格而不是空格 –
這可以用正則表達式來完成http://dev.mysql.com/doc/refman/5.7/en/regexp.html – mikey