2017年9月9日 星期六

[SQL Server] 格式調整補0的問題

在遇到資料顯示時會遇到需要調整格式,需在前面補0的情況下


ex

Select '1' From TableA

假設目前資料要秀出001這樣的格式

可以利用 REPLICATE('字串',次數) 這個函數

Select REPLICATE('0',2) +'1' From Table A

如此就可以得到想要的結果
------------------------------------------------------

下面加一些變化

Select REPLICATE('0',5-Len(欄位A)) + 欄位A From Table A

如此就可以依照欄位的長短不同,固定都補到5位數

------------------------------------------------------

如果遇到統計筆數的話 Count(*)
但這邊要注意下先轉成字串

ex: Select REPLICATE('0', 5-Len(Count(*))) + Str(Count(*)) From Table A


不過這樣出來的結果會很奇怪,左邊會多出很多空白
所以多加下面一段把 Str(Count(*)) 左邊產生的空白取代掉

Select REPLICATE('0', 5-Len(Count(*))) + LTRIM(Str(Count(*))) From Table A


但如果遇到筆數可能會超過5碼但又希望最少都能捕到5碼的狀況
那就再加上以下判斷

這邊分段寫看起來比較方便
    未滿5碼時要做的事:
    Str1= REPLICATE('0', 5-Len(Count(*))) + LTRIM(Str(Count(*)))
    超過5碼保持原樣(這邊要記得轉換成字串,不然未滿5碼時也會變成數值結果):
    Str2= Str(Count(*))
    外面加上判斷 (Case When 條件 Then True Else False End):
    Select (Case When Len(Count(*))<5 Then Str1 Else Str2 End) From Table A
   

沒有留言:

張貼留言