2016-08-24 4 views
-4

文字列を複数の行に分割する方法はありますが、入力表を使用せずに文字列を使用する方法はありますか?文字列を複数の行に分割する

例は、文字列が 'ABCは、GRT、ASD、EEEは、78S'

出力は次のようであるべきである。

ABC

GRT

ASD

eee

78s

私はここで多くの解決策を見ていますが、すべて1つまたは複数の入力文字列が格納されているテーブルを使用しています。

どのようにテーブルを使用せずにこれを達成できますか?

ありがとうございました

+0

データが正しく正規化されていないため、これは苦労しているようです。 – Phylogenesis

+0

これはどのタイプとバージョンのデータベースですか? – LukStorms

答えて

0

下記の機能を作成してください。

CREATE FUNCTION SplitString 
( 
    @Input NVARCHAR(MAX), 
    @Character CHAR(1) 
) 
RETURNS @Output TABLE (
    Item NVARCHAR(1000) 
) 
AS 
BEGIN 
    DECLARE @StartIndex INT, @EndIndex INT 

    SET @StartIndex = 1 
    IF SUBSTRING(@Input, LEN(@Input) - 1, LEN(@Input)) <> @Character 
    BEGIN 
     SET @Input = @Input + @Character 
    END 

    WHILE CHARINDEX(@Character, @Input) > 0 
    BEGIN 
     SET @EndIndex = CHARINDEX(@Character, @Input) 

     INSERT INTO @Output(Item) 
     SELECT SUBSTRING(@Input, @StartIndex, @EndIndex - 1) 

     SET @Input = SUBSTRING(@Input, @EndIndex + 1, LEN(@Input)) 
    END 

    RETURN 
    END 
    GO 

以下のクエリを使用すると、文字列を分割できます。

SELECT Item 
FROM dbo.SplitString('abc,grt,asd,888,78s', ',') 
関連する問題