То, что написал Джейсон Лонг, это то, как я это сделаю.Основываясь на его ответе, я упростил это до одного ПРИМЕНЕНИЯ КРОССА, а не CASE:
SELECT t.ColumnA,
colA = SUBSTRING(t.ColumnA, col.a, 4),
colB = SUBSTRING(t.ColumnA, col.b, 3),
colC = SUBSTRING(t.ColumnA, col.c, 6)
FROM #TestData AS t
CROSS APPLY (VALUES(
NULLIF(PATINDEX('[A-Z][A-Z][0-9][0-9][^A-Z0-9]%', t.ColumnA),0),
NULLIF(PATINDEX('%[^A-Z0-9][A-Z][A-Z0-9][A-Z0-9][^A-Z0-9]%', t.ColumnA),0)+1,
NULLIF(PATINDEX('%[0-9][0-9][0-9][0-9][0-9][0-9]', t.ColumnA),0))) AS col(a,b,c);