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


How to search for particular strings between commas in 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

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

试试这些,使用REGEXP操作符:

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

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

你可以这样做

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