The following query should also take care of values without digits:
SELECTstring Original
,CASEWHEN PATINDEX('%[0-9]%',string) > 0
THEN LEFT(string, PATINDEX('%[0-9]%',string)-1)
ELSE RTRIM(string) END-- Characters first
+ REPLICATE('0', 4-LEN(string))-- Stuff with zeros
+ CASEWHEN PATINDEX('%[0-9]%',string) > 0
THEN SUBSTRING(string, PATINDEX('%[0-9]%',string), 4)
ELSE '' END-- Numeric Trailer
ASModified
FROM @TestData
Best Regards,
Chris Büttner