6

可以在 Mysql 中否定正则表达式模式吗?我知道通常我们可以使用 否定模式?!,但这在 Mysql 中不起作用。

我需要实现的是否定匹配某些二进制的结果,例如.0.0..0.,这意味着当第二、第四和第七是零时不计算在内。我不能使用NOT REGEX,因为我正在构建 mysql 程序,该程序预计将与其他条件一起使用。

任何想法表示赞赏,非常感谢。

4

3 回答 3

16

几乎所有“负正则表达式”匹配问题都有一个通用解决方案:使用一些逻辑将其转换为正匹配问题。

这通常比尝试构建匹配“除此模式之外的所有内容”的正则表达式更容易。

在这种情况下,这很简单:

select * from table
    where column_name regex '[pattern]' = 0 
于 2013-06-07T11:07:56.787 回答
3

您可以使用NOT REGEX

SELECT * FROM table
 WHERE column_name NOT REGEX '^your[[:space:]]pattern here'

Erick Jimenez 的评论中窃取。我认为这比dan1111 的回答要好。

你也可以这样做NOT (any expression)也行NOT (column_name REGEXP 'pattern')

于 2016-12-09T16:55:58.583 回答
1

您可以FULLTEXT在该列上添加索引并使用布尔全文搜索

于 2013-06-07T11:07:14.580 回答