[SQL Server] 「、」カンマ区切りをテーブル化する方法
■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(@Separato...