我正在尝试在常见的acct_nbr字段中连接Netezza数据库中的两个事实表。在表a中,它是BIGINT,在表b中,它被编码为VARCHAR。 (我无法控制表格设计,我怀疑它设置为VARCHAR,因为它是由网页输入填充的,并且需要能够容忍拼写错误。)我想忽略连接的字母字符 - 我我愿意排除表b中包含非数字字符的所有字段。 (该字段还包含 - ,?,!等)
我尝试了以下内容:
我确信这是一个简单的问题,但我正在撞墙。非常感谢任何帮助!
答案 0 :(得分:1)
您可以通过几种不同的方式完成加入。
select ...
from table_a a join
table_b b on (a.acct_nbr=b.acct_nbr
and translate(b.acct_nbr,'1234567890','') in ('','.','-','-.')
或者,如果您安装了sql functions工具包,则可以执行此操作。
select ...
from table_a a join
table_b b on
(a.acct_nbr=sql_functions..regexp_extract(b.acct_nbr,'^[0-9]{1,18}')