1. 程式人生 > >SQL Server中如何實現不固定長度字串字首後固定長度自動補0

SQL Server中如何實現不固定長度字串字首後固定長度自動補0

實現要求:如 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