2017-07-11 46 views
0

我正在使用Microsoft SQL Server Management Studio,並且我有一個包含記錄的數據庫。我想對這些記錄運行一個查詢,並基於記錄的解析生成單獨的行 - 但是,如果未解析的字符串包含01,我需要生成I行,如果它包含02,則需要生成2行。解析SQL記錄以選擇不同數量的字段?

的數據是這樣的:

01AAAA 
01BBBB 
02CCCCDDDD 
02CCCCAAAA 
01BBBB 
02BBBBDDDD 
01AAAA 

,我想我的select語句後執行以下操作:

AAAA 
BBBB 
CCCC 
DDDD 
CCCC 
AAAA 
BBBB 
BBBB 
DDDD 
AAAA 

這可能使用選擇和某種IF語句,或者我需要將數據拆分到另一個表中。謝謝。

回答

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, 傑森

+0

感謝傑森,是很好的伎倆。 – beliskna

+0

很高興幫助。 :) –