繁体   English   中英

在这种情况下,如何编写SQL查询?

[英]How to write a SQL query for this case?

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

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

在Excel多维数据集中,所有数字均为6位数字,例如090034

因此,如何编写SQL查询来检查是否所有5位数字都在开头添加了0,并将其与Excel多维数据集进行比较?

这是一个片段,它将在6个或更少的数字前添加前导零:

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

假定您的列称为MyID ,并且它已经是数字数据类型。 如果已经是字符串,则可以尝试以下操作:

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

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

如果数据库中的数据存储为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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM