繁体   English   中英

T-SQL-CAST字符,前导零到整数

[英]T-SQL - CAST char with leading zeros to int

我想将前导零的char转换为int,例如从'00010'00010 我尝试使用CASTCONVERT

select CONVERT(int, '00010')

但是该函数在开头删除零,并返回10而不是00010 您知道对此有任何简单的解决方案吗? 输入的长度将始终为5。

从数学上讲,前导零是没有意义的,因此Int不能有前导零。

如果需要显示前导零,则始终可以转换为varchar并使用right串联,如下所示:

DECLARE @MyVal int = 10;
SELECT RIGHT('00000' + CAST(@MyVal as varchar(5)), 5)

您必须阅读有关数据类型的信息。 INT所关注的不只是位模式。 每当您以可阅读的格式看到数字时,实际值都会转换为由数字组成的字符串。 但是此数字格式不是实际的INT

前导零从来都不是INT本身的一部分,但可以添加到字符串表示中。 因此,您的问题(从字面上看)实际上没有任何意义。

如果有一个像00012这样的字符串,并且想像一个数字一样使用它,则应该将其强制转换:

SELECT CAST('00012' AS INT) + 2; --14

其他答案向您展示了一些从INT获取填充字符串表示形式的方法,但这是相反的方向:

SELECT REPLACE((STR(12,5),' ','0'); --00012

您可以结合使用以下方法:

DECLARE @PaddedNumber CHAR(5)='00012'
SELECT REPLACE(STR(CAST(@PaddedNumber AS INT) + 2,5),' ','0'); --00014

补齐的数字(按类型是-一个字符串)被强制转换为INT ,然后用于计算。 结果是INT ,可以将其转换为填充字符串。 但是最终结果的类型是字符串...

SELECT FORMAT(CONVERT(INT,'00010'), 'd5') 

应该解决问题:)

暂无
暂无

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

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