我使用的是Microsoft SQL Server Management Studio,我有一个包含记录的数据库。我想对这些记录运行查询并根据记录的解析生成单独的行 - 但是如果未解析的字符串包含01我需要生成I行,如果它包含02,我需要生成2行。
数据是这样的:
01AAAA
01BBBB
02CCCCDDDD
02CCCCAAAA
01BBBB
02BBBBDDDD
01AAAA
我在select语句后想要以下内容:
AAAA
BBBB
CCCC
DDDD
CCCC
AAAA
BBBB
BBBB
DDDD
AAAA
使用select和某种IF语句是否可行,或者我是否需要将数据拆分到另一个表中。感谢。
答案 0 :(得分:2)
如果您提供的数据实际上代表了您的实际数据(2个字符后跟N个4个字符值),则无需查看前两个字符。
请参阅以下内容......
IF OBJECT_ID('tempdb..#TestData', 'U') IS NOT NULL
DROP TABLE #TestData;
CREATE TABLE #TestData (
ColumnToSplit VARCHAR(100)
);
INSERT #TestData (ColumnToSplit) VALUES
('01AAAA'),
('01BBBB'),
('02CCCCDDDD'),
('02CCCCAAAA'),
('01BBBB'),
('02BBBBDDDD'),
('01AAAA');
--=========================================
SELECT
sv.SplitValues
FROM
#TestData td
CROSS APPLY ( VALUES
(SUBSTRING(td.ColumnToSplit, 3, 4)),
(SUBSTRING(td.ColumnToSplit, 7, 4))
) sv (SplitValues)
WHERE
sv.SplitValues <> '';
HTH, 杰森