我正在尝试使用正则表达式在我的Db中搜索多个列。它有效但使用了许多和/或法规。我想知道是否可以使用这样的东西;
SELECT * FROM table REGEXP 'regex' IN (col1, col2, col3,.....)
这不起作用,它是对语法的猜测,因为我在网上搜索找不到类似的东西。这是一个愚蠢的想法还是我错过了一些非常简单的东西?
答案 0 :(得分:5)
如果您想regexp
在多列中搜索值,则可以执行以下操作:
SELECT * FROM table where CONCAT(col1, col2, col3) REGEXP 'search-pattern';
答案 1 :(得分:2)
MySQL REGEX比较的语法是
expr REGEXP pattern_string
您不能将其与IN
一起使用。你必须这样做:
SELECT * FROM `table` WHERE
col1 REGEXP 'regex'
OR col2 REGEXP 'regex'
OR col3 REGEXP 'regex'
您也可以使用RLIKE
- 它们是同义词。