2016-02-05 47 views
2

我想查找具有特定名称的行。问题是,一些行有一个前缀:"(OBSOLETE)""(OBSOLETE) "SQL查找列所在行的行

所以对于名字约翰,我可以有三行:

John 
(OBSOLETE)John 
(OBSOLETE) John 

我将如何编写一个查询,这样我可以找到所有的与该名称匹配的行知道有时前缀将在那里,我也想要那些?

+0

这可以用正则表达式来完成http://dev.mysql.com/doc/refman/5.7/en/regexp.html – mikey

回答

1

你能在LIKE语句中使用SQL通配符吗?

SELECT * FROM Customers WHERE Name LIKE '%John'; 
0

要还不匹配BillyJohn:

select 
    * 
    from T 
    where ltrim(replace(fld, '(OBSOLETE)', '')) = 'John' 

或者干脆:

where fld IN ('John', '(OBSOLETE) John', '(OBSOLETE)John') 

它不像上面(或LIKE用铅通配符)有机会使用应索引一个存在。

+0

Alex,谢谢你的回答。如果这个名字带有两个词,比如“John Smit”,这会起作用吗?我认为你正在取代空间。 –

+0

它只替换单词之间的空格而不是空格 –