【问题标题】:How to ignore initial non-numeric chars in a column如何忽略列中的初始非数字字符
【发布时间】:2014-06-01 00:37:59
【问题描述】:

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

TXN_COUNT 个。 ACCT_NUM 具有以下值 -

DDA2323  
GOLDE434  
VDA-10345  
.  
.  
.  

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

这可以通过加入案例陈述来实现吗?我正在使用 sql server。

【问题讨论】:

    标签: sql sql-server substring case


    【解决方案1】:

    一种方法是使用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)
    

    【讨论】:

    • 一些账户号码没有任何非数字字符。抱歉,我现在已经编辑了我的问题。
    • like中不需要添加[^0-9],去掉这块不会影响输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 2023-01-19
    • 2014-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多