REGEXP替换teradata以消除地址字段中出现的数字字

REGEXP替换teradata以消除地址字段中出现的数字字,teradata,regexp-replace,Teradata,Regexp Replace,我想从地址字段中提取街道名称和类型 Input = expected output 3/14 MARKDOWN ST = MARKDOWN ST 22-23 MARKDOWN ST = MARKDOWN ST 33C MARKDOWN ST = MARKDOWN ST 33 MARKDOWN VENUE ST = MARKDOWN ST 44/11 MARKDOWN AVE = MARKDOWN AVE 我尝试使用TRIMregexp_replace col,“^[0-9]|[/-][0-9]

我想从地址字段中提取街道名称和类型

Input = expected output
3/14 MARKDOWN ST = MARKDOWN ST
22-23 MARKDOWN ST = MARKDOWN ST
33C MARKDOWN ST = MARKDOWN ST
33 MARKDOWN VENUE ST = MARKDOWN ST
44/11 MARKDOWN AVE = MARKDOWN AVE
我尝试使用TRIMregexp_replace col,“^[0-9]|[/-][0-9]”但它只是删除了数字,我希望与单词数字相关的也被删除。

33 MARKDOWN Vince ST的输出是否应该是MARKDOWN Vince ST?如果是,请尝试以下方法:

选择 我的价值, REGEXP_SUBSTRmyvalue,'^.*?\s.*$'作为mystreet 来自cte 我没有TD系统要测试,但请尝试一下,让我知道。您可能还需要修改匹配参数

试试这个: regexp_replaceupper,“\b[^A-Z]*\d\w*”


这将替换任何包含非字母字符的单词。

在Teradata中,至少REGEXP_SUBSTR返回完全匹配,因此只要有空格,“^.*.\s.*$”将返回原始字符串。但是可以使用“.*?\s\K.*”返回第一个空格字符后的所有内容。该CTE子句在Teradata中也不起作用。您不能以这种方式合并非表中的多个选择。已更新,谢谢Andrew。我需要先设置一个vm来测试这些。谢谢andrew,代码几乎可以正常工作了,但是有一些字符串像这样a 8/148 MARKDOWN ST,A17/148 MARKDOWN ST,1 AB MARKDOWN RD,其输出是一个MARKDOWN ST,A17148 MARKDOWN ST,AB MARKDOWN RD,我只需要将MARKDOWN提取为street Name,其余提取为street type。有时字符串也是这样显示的C/-MARKDOWN+charolte309janastreette一个正则表达式不可能满足您的要求。您的最后一个示例可能在第三方地址标准化工具上失败。您还扩展了原有问题的范围,消除了数字词。