MYSQL子查询和正则表达式

时间:2015-07-28 11:47:41

标签: php mysql regex

我正在尝试将此查询的结果与我用于PHP验证的正则表达式匹配。

select u.id,concat(u.address1,', ',u.zip,' ',u.city,', ',c.countryName) as Address
from User u join
     country c on u.countryCode=c.countryCode

输出

27 Avenue Pasteur, 14390 Cabourg, France

28 Avenue Pasteur, 14390 Cabourg, France

30 14390 Cabourg, France

29 Avenue Pasteur, 14390 Cabourg, France

我不会将此与正则表达式匹配并仅获得正确的结果。

/^(?:\\d+ [a-zA-Z ]+, ){2}[a-zA-Z ]+$/

我不确定如何使用MYSQL REGEXP

来获取此功能

类似

select u.id,concat(u.address1,', ',u.zip,' ',u.city,', ',c.countryName) as Address
    from User u join
         country c on u.countryCode=c.countryCode
where Address REGEXP '^st'

1 个答案:

答案 0 :(得分:1)

根据手册https://dev.mysql.com/doc/refman/5.1/en/regexp.html,在mysql中使用正则表达式,如下所示:

WHERE phone REGEXP '(435)';

现在在你的实例中你的正则表达式有一些问题。我更新的正则表达式解决了大部分问题,但仍未找到其中一个地址(30 14390 Cabourg,France)。 https://regex101.com/r/zN7yT1/1

select u.id,concat(u.address1,', ',u.zip,' ',u.city,', ',c.countryName) as Address
from User u join
country c on u.countryCode=c.countryCode
where concat(u.address1,', ',u.zip,' ',u.city,', ',c.countryName)
regexp '^[0-9]+,? [^,]+, [0-9]+,? [^,]+, [a-zA-Z]+$'

这是未经测试的,但我认为应该恢复regex101找到的三个结果。