【问题标题】:Get list of address dont have UK address mysql获取地址列表没有英国地址 mysql
【发布时间】:2020-08-28 09:17:39
【问题描述】:

我有一个 MySQL 表包含英国地址列表,我试图获取地址列表中没有邮政编码。

我在列表中,我们可以看到其中一些在末尾没有邮政编码。

我写了如下查询,没有得到预期的结果。

select * from property_address WHERE property_address
REGEXP '^([A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]? {1,2}[0-9][ABD-HJLN-UW-Z]{2}|GIR 0AA)$'

如何修复这个查询?

【问题讨论】:

  • 如何定义邮政编码?
  • 剥离最后 2 个标记(使用 SUBSTRING_INDEX)并测试它们是否与邮政编码模式匹配。
  • @Akina 有空格?
  • 我不知道什么是英国邮政编码模式。
  • @ShijinTR: 你不只是想从正则表达式中删除前导^,所以它匹配在字符串的末尾而不是整个字符串?

标签: mysql regex postal-code


【解决方案1】:

我会假设邮政编码正则表达式是正确的。

    REGEXP '^([A-PR-UWYZ0-9]...|GIR 0AA)$'
    ______  _

您需要删除我在上面强调的“锚点”(^)。这不是“不”。相反,这样否定:

NOT REGEXP  '([A-PR-UWYZ0-9]...|GIR 0AA)$'
___         _

Akina 建议先通过SUBSTRING_INDEX 提取可能会加快查询速度。

【讨论】:

  • 但是我们不知道字符串的确切长度
  • @ShijinTR - 如果你知道空格的数量,那么你可以使用SUBSTRING_INDEX(... ' ', -2) 来获取最后2个单词。
猜你喜欢
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-03
  • 1970-01-01
  • 2012-09-17
  • 1970-01-01
相关资源
最近更新 更多