sql 正则表达式未返回预期结果

问题描述 投票:0回答:1

我正在尝试在 sql 中运行以下语句,但没有返回任何行。我知道我的正则表达式是正确的,它应该能够获取模式(即 H4A2H5),但事实并非如此。我不确定我的执行是否有问题

select * from test
where postal_code REGEXP '^[A-Za-z]\d[A-Za-z][ -]?\d[A-Za-z]\d$';
sql regex mysql-regexp
1个回答
0
投票

你遗漏了一件事,而使用了其他错误的东西。

  1. 需要添加比较,
    REGEXP
    执行比较并返回布尔值
  2. Mysql 正则表达式中数字的字符类是
    [[:digit:]]

因此您要查找的查询如下:

select * 
  from test
 where 
postal_code REGEXP '^[A-Za-z][[:digit:]][A-Za-z][ -]?[[:digit:]][A-Za-z][[:digit:]]$' = 1;

检查其他字符类的文档:https://dev.mysql.com/doc/refman/8.0/en/regexp.html#regexp-syntax(向下滚动一点)

在这里查看它的工作情况

© www.soinside.com 2019 - 2024. All rights reserved.