我需要比较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
答案 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