【发布时间】:2021-11-23 01:26:34
【问题描述】:
我正在尝试连接两个数字,但结果我需要一个字符串。如果我添加两个数字,则会删除零。我需要一个 10 个字符的字符串
select
case
when Len(CODBADGE) = 1 then '000000000'+ CODBADGE
when Len(CODBADGE) = 2 then '00000000'+ CODBADGE
when Len(CODBADGE) = 3 then '0000000'+ CODBADGE
when Len(CODBADGE) = 4 then '000000'+ CODBADGE
when Len(CODBADGE) = 5 then '00000'+ CODBADGE
when Len(CODBADGE) = 6 then '0000'+ CODBADGE
when Len(CODBADGE) = 7 then '000'+ CODBADGE
when Len(CODBADGE) = 8 then '00'+ CODBADGE
when Len(CODBADGE) = 9 then '0'+ CODBADGE
when Len(CODBADGE) = 10 then CODBADGE
else NULL
end as code10
from
TAB_BADGE
代码标记
1
10
100
1000
10000
100000
1000000
10000000
100000000
1000000000
结果:
0000000001
0000000010
0000000100
0000001000
0000010000
0000100000
0001000000
0010000000
0100000000
1000000000
【问题讨论】:
-
会容易得多:
SELECT RIGHT('0000000000' + CODBADGE, 10).... -
注:如果
CODBADGE是一个 INT(从您的结果来看它是),那么您需要使用RIGHT(CONCAT('0000000000', CODBADGE), 10)代替,否则0000000000将被隐式转换为数字,并且 SQL Server 将执行加法而不是串联.你也可以使用FORMAT(x.CODBADGE, '0000000000'),但是FORMATdoes not scale particularly well -
@GarethD:正确 - 在这种情况下,请使用
SELECT RIGHT('0000000000' + CAST(CODBADGE AS VARCHAR(10)), 10) -
好的,谢谢。解决方法:SELECT RIGHT ('0000000000' + CAST (CODBADGE AS VARCHAR (10)), 10)
标签: sql-server tsql