正则表达式 Oracle 删除美国和加拿大格式的邮政编码后的所有内容
Regexp Oracle remove everything after zip code of US and Canada format
我的地址格式类似于
123, abc street, Dallas, Tx 75701, 500-998-7898, Directions X Y Z west
of
我想删除 ZIP CODE 之后与美国格式(5 位格式或 5 位 + 4 位代码格式)以及加拿大邮政编码格式(如 Y89 567 或 Y89567)匹配的所有内容。
所以我的最终答案应该是这样的。
123, abc street, Dallas, Tx 75701
感谢任何帮助。
这是一种方法。请注意任何 "looks like" 和 U.S。或加拿大邮政编码将被假定为一个。此外,您会错过 Beverly Hills, Calif. 90210
之类的内容,因为 "Calif." 不是 "seen" 作为州代码。我也有点粗心;如果邮政编码后面有任何内容,则不应是字母或数字。我没有为此写 "test";如果需要,留作练习。
我假设如果没有找到邮政编码,则必须返回整个输入字符串。
with
inputs ( addr ) as (
select '123, abc street, Dallas, Tx 75701, 500-998-7898' from dual union all
select '336 Main St, New City, NZ 39023-8882, john.d@email' from dual union all
select '837B Hilltop, Canadian City, ON Z34802 4028048 kilo' from dual union all
select '12345 Circle Drive, Lakeview, MN' from dual
)
select addr,
regexp_substr( addr,
'(.*?([[:alpha:]]{2} \d{5}(-\d{4})?|[[:alpha:]]\d{2} ?\d{3}|$))',
1, 1, null, 1) as clean_addr
from inputs
;
ADDR CLEAN_ADDR
--------------------------------------------------- --------------------------------------
123, abc street, Dallas, Tx 75701, 500-998-7898 123, abc street, Dallas, Tx 75701
336 Main St, New City, NZ 39023-8882, john.d@email 336 Main St, New City, NZ 39023-8882
837B Hilltop, Canadian City, ON Z34802 4028048 kilo 837B Hilltop, Canadian City, ON Z34802
12345 Circle Drive, Lakeview, MN 12345 Circle Drive, Lakeview, MN
我的地址格式类似于
123, abc street, Dallas, Tx 75701, 500-998-7898, Directions X Y Z west of
我想删除 ZIP CODE 之后与美国格式(5 位格式或 5 位 + 4 位代码格式)以及加拿大邮政编码格式(如 Y89 567 或 Y89567)匹配的所有内容。
所以我的最终答案应该是这样的。
123, abc street, Dallas, Tx 75701
感谢任何帮助。
这是一种方法。请注意任何 "looks like" 和 U.S。或加拿大邮政编码将被假定为一个。此外,您会错过 Beverly Hills, Calif. 90210
之类的内容,因为 "Calif." 不是 "seen" 作为州代码。我也有点粗心;如果邮政编码后面有任何内容,则不应是字母或数字。我没有为此写 "test";如果需要,留作练习。
我假设如果没有找到邮政编码,则必须返回整个输入字符串。
with
inputs ( addr ) as (
select '123, abc street, Dallas, Tx 75701, 500-998-7898' from dual union all
select '336 Main St, New City, NZ 39023-8882, john.d@email' from dual union all
select '837B Hilltop, Canadian City, ON Z34802 4028048 kilo' from dual union all
select '12345 Circle Drive, Lakeview, MN' from dual
)
select addr,
regexp_substr( addr,
'(.*?([[:alpha:]]{2} \d{5}(-\d{4})?|[[:alpha:]]\d{2} ?\d{3}|$))',
1, 1, null, 1) as clean_addr
from inputs
;
ADDR CLEAN_ADDR
--------------------------------------------------- --------------------------------------
123, abc street, Dallas, Tx 75701, 500-998-7898 123, abc street, Dallas, Tx 75701
336 Main St, New City, NZ 39023-8882, john.d@email 336 Main St, New City, NZ 39023-8882
837B Hilltop, Canadian City, ON Z34802 4028048 kilo 837B Hilltop, Canadian City, ON Z34802
12345 Circle Drive, Lakeview, MN 12345 Circle Drive, Lakeview, MN