实现要求:如 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