SQL Tips

 

[SQL Server] 「,」カンマ(COMMA)区切りのデータをテーブル(TABLE)に変換する方法

■SQL SERVER 2016以上のバージョン
SQL SERVER 2016からは「string_split」関数が追加され簡単にカンマ区切りのデータをテーブルに変換することができます。

DECLARE @StrComma varchar(100)

SET @StrComma = 'A,B,C,D'

SELECT * FROM string_split(@StrComma,',')

 

■SQL SERVER 2014以下のバージョン
SQL SERVER 2014以下のバージョンでは関数を作成して変換することができます。
まず、関数を作成します。 

CREATE FUNCTION dbo.fnStringSplit
(
@Str VARCHAR(MAX)
, @Separator CHAR(1)
)
RETURNS @RESULT TABLE(RtnVal VARCHAR(MAX))
AS
BEGIN
DECLARE @SeparatorPosition int = CHARINDEX(@Separator, @Str )
DECLARE @Value VARCHAR(MAX), @StartPosition int = 1

IF @SeparatorPosition = 0
BEGIN
INSERT INTO @RESULT VALUES (@Str)
RETURN
END

SET @Str = @Str + @Separator

WHILE @SeparatorPosition > 0
BEGIN
SET @Value = SUBSTRING(@Str , @StartPosition, @SeparatorPosition- @StartPosition)

IF( @Value <> '' )
INSERT INTO @RESULT VALUES(@Value)

SET @StartPosition = @SeparatorPosition + 1
SET @SeparatorPosition = CHARINDEX(@Separator, @Str , @StartPosition)
END

RETURN
END

そして以下のSQLを実行してみてください。

DECLARE @StrComma varchar(100)

SET @StrComma = 'A,B,C,D'

SELECT RtnVal FROM dbo.fnStringSplit(@StrComma,',')

このエントリーをはてなブックマークに追加
2018-05-29 17:27:27   1225

コメント

[SQL Server] 暗号化、復号化 / ENCRYPTBYPASSPHRASE / DECRYPTBYPASSPHRASE

-.日付:2014-02-28   カテゴリ : -   閲覧数:7227

[MySQL] Event Scheduler 設定方法

-.日付:2020-11-26   カテゴリ : -   閲覧数:26

[SQL Server] OpenQuery 利用方法

-.日付:2019-07-19   カテゴリ : -   閲覧数:661

[SQL SERVER] XMLをテーブル形式に変換するSQL

-.日付:2018-12-27   カテゴリ : -   閲覧数:950

[SQL SERVER] JSON 文字列をテーブル形式に変換するSQL

-.日付:2018-12-27   カテゴリ : -   閲覧数:479

[SQL SERVER]日付をフォーマット(format)された文字列に変換する

-.日付:2018-12-27   カテゴリ : -   閲覧数:837

[SQL Server] sidを指定してcreate userでDBアカウント作成方法

-.日付:2018-12-27   カテゴリ : -   閲覧数:580

[SQL SERVER] Trace Logのtrcファイルの内容を確認する方法

-.日付:2018-12-05   カテゴリ : -   閲覧数:630

Copyright © 2015 INNOYA.COM All rights reserved. RSS