如何为这种情况编写SQL查询?

时间:2016-04-20 17:23:40

标签: sql

我需要编写一个SQL查询,我可以将结果与Excel多维数据集进行比较。对于特定的表,它已针对所有合同号更新,只有5位数,其中每五位数前面加0。他们留下剩余的数字,即6位数字相同。但是,这个更新是在ETL包中完成的,添加的0对我来说是透明的,即我在表中看不到它。

例如:对于90034,他们在数字的开头添加了0,即090034,但在ETL包中,表中90034在90034前面的0是透明的。

在Excel立方体中,所有数字都是6位数字,例如,090034

那么,我怎样才能编写一个SQL查询来检查是否所有5位数字都是在开头添加0并将其与Excel立方体进行比较?

2 个答案:

答案 0 :(得分:0)

这是一个代码段,它会将前导零添加到六个或更少数字的数字中:

 select   right('000000' + convert(varchar(6), MyID), 6)

这假设您的列名为MyID,并且它已经是数字数据类型。如果它已经是一个字符串,你可以试试这个:

 select   right('000000' + ltrim(rtrim(MyID)), 6)

免责声明:这是从内存中完成的,未经过测试。

答案 1 :(得分:0)

如果数据库中的数据存储为varchar或nvarchar,则更好地用于比较,因为它显然不是数字或者不会有前导零。

但是,如果您无法解决问题,并且知道字符串应该具有的总字符数,则此方法会有所帮助。

create table #test (myfield int)
insert into #test (myfield)
values(090034)
select * from #test
select Right('000000' + cast(myfield as varchar(6)) , 6) from #test