2017-07-11 5 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文字の値が続く)、最初の2文字を見る必要はありません。

はうまくトリックをした...

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

喜んで助けてください。 :) –

関連する問題