MySql查询字符串上的部分

时间:2014-01-30 00:26:55

标签: mysql sql regex select sql-like

名称栏包含“John Smith”,“Elsa John Sanders”,“LilJohn Thomson”,“John”等项目。 如何构造查询只是为了返回名字而不是LilJohn。

我不能做像'%John%'那样会回归'LilJohn Thomson'。

5 个答案:

答案 0 :(得分:1)

看起来像这样: Search for "whole word match" in MySQL

该方法使用光滑的正则表达式。

答案 1 :(得分:0)

假设某个单词由空格定义,您可以执行以下操作:

where concat(' ', col, ' ') like '% John %'

答案 2 :(得分:0)

以下表达式应该找到所有“John”s

a = 'John' OR
a LIKE 'John %' OR
a LIKE '% John %' OR
a LIKE '% John'

请注意,其他一些技巧也有效,但可能会严重影响性能,例如

CONCAT(" ",a," ") LIKE "% John %"

答案 3 :(得分:0)

使用+ space通配符尝试SIMILAR TO'%+ John +%'。

答案 4 :(得分:0)

您可以使用REGEXP功能。

试试这个:

SELECT * 
FROM tableA a 
WHERE a.name REGEXP '[[:<:]]John[[:>:]]'