[英]T-SQL - CAST char with leading zeros to int
我想将前导零的char转换为int,例如从'00010'
到00010
。 我尝试使用CAST
或CONVERT
:
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.