否定mysql中的正则表达式模式

时间:2013-06-07 11:03:38

标签: mysql regex

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

我需要实现的是否定匹配像.0.0..0.这样的二进制的结果,这意味着当第二,第四和第七是零时不计算。我不能使用NOT REGEX,因为我正在构建mysql过程,它希望与其他条件一起使用。

非常感谢任何想法,非常感谢。

3 个答案:

答案 0 :(得分:14)

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

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

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

select * from table
    where column_name regex '[pattern]' = 0 

答案 1 :(得分:3)

您可以使用NOT REGEX

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

Erick Jimenez's comment被盗。我认为这比dan1111's answer好。

您也可以执行NOT (any expression),因此NOT (column_name REGEXP 'pattern')也可以。

答案 2 :(得分:1)

您可以在该列上添加FULLTEXT索引并使用Boolean Full-Text Searches