可以否定Mysql中的正则表达式模式吗?我知道通常我们可以使用?!
否定一个模式,但这在Mysql中不起作用。
我需要实现的是否定匹配像.0.0..0.
这样的二进制的结果,这意味着当第二,第四和第七是零时不计算。我不能使用NOT REGEX
,因为我正在构建mysql过程,它希望与其他条件一起使用。
非常感谢任何想法,非常感谢。
答案 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