解析SQL记录以选择不同数量的字段?

时间:2017-07-11 20:05:02

标签: sql-server

我使用的是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语句是否可行,或者我是否需要将数据拆分到另一个表中。感谢。

1 个答案:

答案 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, 杰森