2013-11-26 37 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