【发布时间】:2017-12-08 06:10:34
【问题描述】:
我在 Oracle 中有一个地址字段,我需要从中提取州代码。
select '111 BROADWAY ~ ST LOUIS, WA 58585' from dual
union
select '111 BROADWAY ~ ST LOUIS, WA' from dual
union
select '111 BROADWAY ~ ST LOUIS,58585 WA' from dual
有时状态代码WA 在Postal Code 之前和之后。
在某些情况下,Postal code 也不存在。
在所有这些情况下都需要帮助来提取 WA。
【问题讨论】:
-
你的标题说的是别的东西:它说“找到两个字母字”。地址中可能有两个字母单词,它们不是州代码(例如,Hilltop Av - Av 是“Avenue”的缩写,不是州代码;甚至是您的示例中的 ST!)。所以:你想找到州代码吗?你如何区分它们?它们总是地址中的最后两个字母吗?地址是否总是包含州代码? (否则您可能会在我的示例中选择“Av”,或者在您的示例中选择 ST,并认为它是状态代码。)
-
标题有点误导。是的,州代码将始终在地址中。 ST 和 WA 都是州代码。所以我想看看我是否可以从字符串末尾提取两个字母的单词。这是我最好的机会
-
我知道!所以:你在寻找最后两个字母的单词吗?以及如何定义“单词”——你可能有类似“London SQ1”之类的东西——所以你不能只查找前面和后面跟着一个非字母的两个字母。状态码之前总是空格,后面是空格还是字符串结尾?
标签: oracle regexp-substr