我的表列包含由 ,
分隔的字符串,如下所示
Algebraic topology,Riemannian geometries
Classical differential geometry,Noncommutative geometry,Integral transforms
Dark Matter
Spectral methods,Dark Energy,Noncommutative geometry
Energy,Functional analytical methods
我正在尝试搜索在逗号之间有字符串的 MySQL 行,例如,如果我搜索非交换几何
,我想选择这两行
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(,.*|$)'
) 要求搜索词前面有一个逗号或开头字符串,后跟逗号或字符串末尾。
关于php - 如何在 MySQL 中搜索逗号之间的特定字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32223139/