我的表格列包含由,
分隔的字符串,如此
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
这不是我要找的。有没有办法解决这个问题,以便它只找到逗号之间有字符串的行?
答案 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'