Mysql SQL查找列类似的行
我想查找具有特定名称的行。问题是有些行有前缀:Mysql SQL查找列类似的行,mysql,sql,Mysql,Sql,我想查找具有特定名称的行。问题是有些行有前缀:(过时)或(过时) 因此,对于John这个名字,我可以有三行: John (OBSOLETE)John (OBSOLETE) John 我如何编写一个查询,以便在知道有时会有前缀的情况下找到与该名称匹配的所有行,我也需要这些行?您能在LIKE语句中使用SQL通配符吗 SELECT * FROM Customers WHERE Name LIKE '%John'; 要与BillyJohn不匹配,请执行以下操作: select * from
(过时)
或(过时)
因此,对于John这个名字,我可以有三行:
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')
与上面不同的是(或类似于带前导通配符的),如果存在索引,则有机会使用索引。这可以通过正则表达式Alex实现,谢谢你的回答。如果名字里有两个词,比如“约翰·斯密特”,这行得通吗?我认为你在替换空格。它只替换前导空格,而不是单词之间的空格