我想查找具有特定名称的行。问题是,一些行有一个前缀:"(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