如何在MySQL中搜索逗号之间的特定字符串?

时间:2015-08-26 09:42:55

标签: php mysql

我的表格列包含由,分隔的字符串,如此

Algebraic topology,Riemannian geometries
Classical differential geometry,Noncommutative geometry,Integral transforms
Dark Matter
Spectral methods,Dark Energy,Noncommutative geometry
Energy,Functional analytical methods

我正在尝试搜索逗号之间有字符串的MySQL行,例如,如果我搜索Noncommutative geometry,我想选择这两行

Classical differential geometry,Noncommutative geometry,Integral transforms
Spectral methods,Dark Energy,Noncommutative geometry

这就是我试过的

SELECT * FROM  `mytable` WHERE  ``col` LIKE  '%Noncommutative geometry%'

工作正常,但问题是如果我在搜索Energy我想要选择行

Energy,Functional analytical methods

但我的代码给出了两行

Energy,Functional analytical methods
Spectral methods,Dark Energy,Noncommutative geometry

这不是我要找的。有没有办法解决这个问题,以便它只找到逗号之间有字符串的行?

2 个答案:

答案 0 :(得分:2)

尝试使用REGEXP运算符尝试:

SELECT * FROM  `mytable`
WHERE  `col` REGEXP  '(^|.*,)Noncommutative geometry(,.*|$)'

SELECT * FROM  `mytable`
WHERE  `col` REGEXP  '(^|.*,)Energy(,.*|$)'

正在使用的表达式('(^|.*,)$searchTerm(,.*|$)')要求搜索词以逗号或字符串的开头开头,后跟逗号或字符串的结尾。

答案 1 :(得分:0)

你可以这样做

SELECT * FROM  `mytable` WHERE  `col` LIKE  '%,$yourString,%'
                         or `col` LIKE '$yourString,%'
                         or `col` LIKE '%,$yourString'