为什么我不能在mysql中使用正则表达式连接?

时间:2019-05-30 04:48:41

标签: mysql regex

我想使用我在www.regex101.com和其他正则表达式测试网站上测试过的正则表达式在数据库中找到一些无效的邮政编码(记录超过500万条),并且工作正常。我还需要将表与另一个表连接起来,以查找有关该记录的更多详细信息。但是查询不起作用,并且继续搜索而没有任何错误。我已经将此精确正则表达式用于没有联接的另一个查询,并且仅用于一个表,并且它可以工作。因此,我认为这与其他开发人员告诉我的反向引用无关。

这是我已经尝试但没有成功的查询:

"SELECT a.Name,a.AdslTel,a.Mobile, b.CodePosty 
 FROM on_customers as a, on_customers_detail as b 
 WHERE a.Serial=b.CustomerRef and a.TownshipRef='1' 
 AND b.CodePosty NOT REGEXP '^[13456789]{5}[1-9]([[:digit:]]){3}([1- 
 9]){1}$' or b.CodePosty REGEXP '([[:digit:]])\1{5,}' "

这是正常工作的查询:

"SELECT * FROM on_customers WHERE Mobile NOT REGEXP '^(09) 
([[:digit:]]){9}$' 
 or Mobile REGEXP '([[:digit:]])\1{5,}' "

1 个答案:

答案 0 :(得分:0)

NOT a OR b的意思是(NOT a) OR b-也许您想要NOT (a OR b)

a AND b OR c的意思是(a AND b) OR c-也许您想要a AND (b OR c)

至少在不确定优先级规则时添加括号。