例如:若要固定字串長度為四位 ,則 2 --> 0002
SQL SERVER沒有直接可用的函數,只好自己組囉......
我們可以利用兩個SQL函數來實現:
1.REPLICATE ( character_expression ,integer_expression ) :重複填
入指定值
character_expression:欲重複(填補)的字串值(例:0或其他符號)
integer_expression:欲重複的次數
2.LEN(string_expression ):傳回指定字串運算式的字元數(字串長度),但尾端空白不算
實做步驟(以填補「0」為例):
1.用指定的字串長度減掉現有字串長度,就可以得出「0」應該重複(填補)幾次:
假設若要固定長度為4位,不足4位數則會在前端補「0」--->0002
則「0」應該重複幾次=4-LEN(string_expression )
2.指定重複次數:
將步驟1所求出重複次數:4-LEN(string_expression )代入REPLICATE函數中
將「0」代入REPLICATE函數中
則: REPLICATE ( character_expression ,integer_expression)
--->REPLICATE ( '0' ,4-LEN(string_expression ))
如果、我們的原始字串長度 LEN(string_expression )=1 的話 ,
REPLICATE 會成 --->REPLICATE ( '0' ,3 )
--->得出結果為 '000'
3.將結果加上原始字串就是填補後的結果了:
REPLICATE ( '0' ,3 ) +string_expression
範例1:
假設我現有一筆資料,該筆資料工令欄位的值為 9703-1234-000-xxxx,第三個「-」
(第15個字元以後)後面的字元 (xxxx)長度是變動的,最多為四位數,若我要取出第
15個字元以後的四位數,不足四位填補「0」的話,如以下兩例我會取出「52」與
「102」變成「0052」與「0102」:
「9703-AAAA-000-52 」 --->「52」 --->「0052 」
「9703-AAAA-000-102 」--->「102 」--->「0102 」
語法如下:
REPLICATE('0',4-LEN(substring(工令,15,4)))+substring(工令,15,4)
範例2:
沒有留言:
張貼留言