STRING_SPLIT関数で文字列を分割する
SQL Server 2016から使えるSTRING_SPLIT関数を試してみます。
STRING_SPLIT (Transact-SQL) | Microsoft Docs
この関数は1つ目の引数の文字列を2つ目の引数の文字で分割します。戻り値はvalueカラムを1つだけ持つ表形式の結果セットです。
-- ','で分割する select * from string_split(N'abc,def,ghi', N','); -- 結果 /* value ----------- abc def ghi */
1つ目の引数がnullの場合、戻り値は空の結果セット(レコードが0件)になります。分割できない場合は、引数の値がそのまま返ってきます。
-- 引数がnullの場合は空の結果セット select * from string_split(null, N','); /* value ----- */ -- 引数が分割できない場合は引数の値 select * from string_split(N'abc', N','); /* value ----- abc */
また2つ目の引数に文字を複数指定するとエラーになります。
-- エラーになる select * from string_split(N'abc_def-ghi', N'_-'); /* プロシージャでは型 'nchar(1)/nvarchar(1)' のパラメーター 'separator' を想定しています。 */