2013-11-26 35 views
1

当数字少于4时,则补充0前的数字,如何在sqlserver中做? 我的SQL是补充0当数字少时4

SELECT 
    tt.Ddate as PzDate, 
    cast(ltrim(RTRIM(tt.VouchClassCode)) +'-'+cast (tt.VouchNo as varchar(100)) as varchar(100)) as PzZh, 
    t.Digest as Zy, 
    t.Ccode as Kmbm, 
    ttt.Cname as Kmname, 
    t.Jfje as Jfje, 
    t.Dfje as Dfje, 
    tt.Bill as Zhidan, 
    tt.Checker as Shenhe, 
    tt.Book as Jizhang, 
    tt.VouchSource as Pzlaiy 
    FROM [TOBROS_CWT].[dbo].[Cwzz_AccVouchSub] t 
    left join Cwzz_AccVouchMain tt 
    on t.VouchId = tt.VouchId 
    left join Cwzz_AccCode ttt 
    on t.Ccode = ttt.Ccode 
    order by t.VouchId ,tt.Ddate,tt.VouchNo  

sql picture

请看到的画面,我想改变PzZh格式, 例如 “银-1” 到 “银-0001” 怎么办,谢谢。

回答

2

尝试使用CASE表达和RIGHT如下:

cast(ltrim(RTRIM(tt.VouchClassCode)) +'-'+ 
    CASE WHEN tt.VouchNo < 10000 THEN 
     RIGHT('0000' + cast (tt.VouchNo as varchar(100)),4) 
    ELSE 
     cast (tt.VouchNo as varchar(100)) 
    END 
as varchar(100)) as PzZh 
1

可以如果其小于4检查长度,然后添加尾随零

cast(ltrim(RTRIM(tt.VouchClassCode)) +'-'+ 
    Case WHEN len(tt.VouchNo)< 4 Then RIGHT('0000' + cast (tt.VouchNo as varchar(100)),4) 
    Else 
    cast (tt.VouchNo as varchar(100)) 

    End as varchar(100)) as PzZh