由於字符串長度是固定的始終,那麼你可以這樣做:
DECLARE @s VARCHAR(50) = '01AAAA02BBBB03CCCC';
SELECT *
FROM
(
SELECT SUBSTRING(@s, 01, 2) AS ID, SUBSTRING(@s, 3, 4) AS Name
UNION ALL
SELECT SUBSTRING(@s, 7, 2) AS ID, SUBSTRING(@s, 9, 4) AS Name
UNION ALL
SELECT SUBSTRING(@s, 13, 2) AS ID, SUBSTRING(@s, 15, 4) AS Name
) t;
這會給你:
ID Name
01 AAAA
02 BBBB
03 CCCC
更新:如果你想從這個字符串一張桌子,你可以這樣做:
DECLARE @t table(name varchar(50));
INSERT INTO @t VALUES
('01AAAA02BBBB03CCCC'),
('01DDDD02BBBB03CCCC'),
('01HHHH02QQQQ03CCCC'),
('01IIII02MMMM03CCCC');
SELECT *
FROM
(
SELECT SUBSTRING(name, 1, 2) AS ID, SUBSTRING(name, 3, 4) AS Name
FROM @t
UNION ALL
SELECT SUBSTRING(name, 7, 2) AS ID, SUBSTRING(name, 9, 4) AS Name
FROM @t
UNION ALL
SELECT SUBSTRING(name, 13, 2) AS ID, SUBSTRING(name, 15, 4) AS Name
FROM @t
) t;
這會得到Ë您以下:
ID Name
01 AAAA
01 DDDD
01 HHHH
01 IIII
02 BBBB
02 BBBB
02 QQQQ
02 MMMM
03 CCCC
03 CCCC
03 CCCC
03 CCCC
如果字符串的長度是固定的,怎麼能有一個或多個記錄?它是否填充空格?什麼是字符串長度? – RedFilter