如何忽略列中的初始非数字字符

时间:2014-04-16 22:28:18

标签: sql sql-server substring case

我有两个表TXN_COUNT(ACCT_NUM,SRC)和tb_acct(acct_num,source)

TXN_COUNT。 ACCT_NUM具有以下值 -

DDA2323  
GOLDE434  
VDA-10345  
.  
.  
.  

有些行有3行,有些行有4,5行,而有些行有6个初始非数字字符。有些行没有任何非数字字符。我的目标是忽略非数字字符并从tb_acct.acct_num上的TXN_COUNT.ACCT_NUM加入数字部分(tb_acct表具有正确的数字帐号)并从tb_acct表返回正确的acct_num。

加入案例陈述可以做到这一点吗?我正在使用sql server。

1 个答案:

答案 0 :(得分:0)

一种方法是使用like尝试加入:

from TXN_COUNT c join
     tb_acct a
     on c.acct_num like '%[^0-9]' + cast(a.acct_num as varchar(255))

如果你假设在数字前面总是至少有一个非数字字符,这将有效。

编辑:

如果某些人没有任何先前的非数字字符,您可以执行以下操作:

from TXN_COUNT c join
     tb_acct a
     on c.acct_num like '%[^0-9]' + cast(a.acct_num as varchar(255)) OR
        c.acct_num = cast(a.acct_num as varchar(255)