如何从sql查询中修剪前导单引号和前导零

时间:2011-11-29 19:12:35

标签: sql sql-server sql-server-2008

我需要比较sql表中的两列。一列中的数据具有前导单引号,可能具有前导零,而另一列可能具有前导零。在进行比较之前,我需要将一列中的前导零和前面的引号和前导零都修剪掉。这可能吗?

    F.RoutingNum
    123456
    234356
    014233
    233455


    T.RoutingNum
    '123456
    '234356
    '014233
    '0233455

我尝试了这个,但它没有修剪到T.RoutingNum列的前导零。

CASE 
    WHEN Replace(Ltrim(Replace(F.RoutingNum, '0', ' ')), ' ', '0') 
        <> SUBSTRING(Replace(Ltrim(Replace(T.RoutingNum, '0', ' ')), ' ', '0'), 2, 20) 
        THEN 'DO not match' 
    ELSE 'match'
END

2 个答案:

答案 0 :(得分:2)

这是如何根据您的数据类型删除前导零的一个很好的说明:
http://www.sql-server-helper.com/functions/trim-leading-zeros.aspx

如果您的RoutingNum实际上是数字,那就像将其转换为INT

一样简单

这是一个相关的问题,可能也会回答你的问题:
Removing leading zeroes from a field in a SQL statement

编辑:而且,我刚刚确认使用此方法可以轻松确定这些相同的结果:
http://bit.ly/vQYVal

答案 1 :(得分:0)

case
    when cast(isnull(f.routingnum, 0) as bigint) 
        <> cast(isnull(replace(t.routingnum, '''', ''), 0) as bigint)
        then 'do not match'
    else
        'match'
end