SQL Server中如何實現不固定長度字串字首後固定長度自動補0
阿新 • • 發佈:2019-01-27
實現要求:如 YD01,要變成固定6位長度,YD0001
解決思路:
1 要求出數字出現的第一個位置PATINDEX('%[0-9]%',FIELD)。
2 然後可以取出字首
3 取出數字
4 然後用right方法根據字本身長度和固定長度自動補0
SELECT *
INTO #TEST
FROM
(
SELECT F1='YDM01'
UNION
SELECT F1='YD02'
UNION
SELECT F1='Y002'
) A
SELECT * FROM #TEST
SELECT F1,
PATINDEX('%[0-9]%',F1) FIRST_NUM_POS,
SUBSTRING(F1,1,PATINDEX('%[0-9]%',F1)-1) QZ,
SUBSTRING(F1,PATINDEX('%[0-9]%',F1),LEN(F1)-(PATINDEX('%[0-9]%',F1)-1)) NUM ,
SUBSTRING( F1,1,PATINDEX('%[0-9]%',F1)-1)+RIGHT('000000'+SUBSTRING(F1,PATINDEX('%[0-9]%',F1),LEN(F1)-(PATINDEX('%[0-9]%',F1)-1)),6-len(SUBSTRING(F1,1,PATINDEX('%[0-9]%',F1)-1))) DM
FROM #TEST