将前导0添加到sql中的int的最有效方法

Mik*_*ett 9 sql sql-server

我需要从连接为'field1-field2'的数据库中返回两个字段.第二个字段是一个int,但需要返回固定长度5,前导0.我正在使用的方法是:

SELECT Field1 + '-' + RIGHT('0000' + CAST(Field2 AS varchar),5) FROM ...
Run Code Online (Sandbox Code Playgroud)

有没有更有效的方法来做到这一点?

SQL*_*ace 31

这几乎就是这样:将前导零添加到整数值

因此,为了保存链接,查询看起来像这样,#Numbers表在哪里,Num是列:

   SELECT RIGHT('000000000' + CONVERT(VARCHAR(8),Num), 8) FROM #Numbers
Run Code Online (Sandbox Code Playgroud)

对于负值或正值

declare @v varchar(6)
select @v = -5

SELECT case  when @v < 0 
then '-' else '' end + RIGHT('00000' + replace(@v,'-',''), 5) 
Run Code Online (Sandbox Code Playgroud)


DJ.*_*DJ. 6

另一种方式(没有CAST或CONVERT):

SELECT RIGHT(REPLACE(STR(@NUM),' ','0'),5)
Run Code Online (Sandbox Code Playgroud)