分かりやすく、使いやすく。

文字列を分割(split)する方法

スポンサーリンク

この方法は SQL Server 2016 以降のみ対応しています。

SQL Server 2016 以降では、文字列を分割するのに string_split 関数を使用できます。

  1. 文字列を分割する方法
  2. 文字列を分割した結果を1件ずつループして処理する方法


文字列を分割する方法

サンプルコードは次の通りです。「AAA/BBB/CCC」という文字列を「/」で分割しています。

sql(実行可能なサンプルコード)
1
SELECT * FROM string_split('AAA/BBB/CCC', '/');  

実行結果は次の通りです。分割した文字は value という列に格納されます。

実行結果
1
2
3
4
5
value
-----------
AAA
BBB
CCC 

文字列を分割した結果を1件ずつループして処理する方法

分割した結果のテーブルにカーソルを設定することで、分割した結果を1件ずつ処理することができます。サンプルコードは次の通りです。

sql(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
--分割した文字を格納するための変数
DECLARE @VALUE AS VARCHAR(50);
 
--分割した結果を処理するためのカーソルを定義
DECLARE cursor_split_test CURSOR 
FOR SELECT * FROM string_split('AAA/BBB/CCC', '/'); 
 
--カーソルを開く
OPEN cursor_split_test;
 
--1件目を取得
FETCH NEXT FROM cursor_split_test INTO @VALUE;
 
WHILE @@FETCH_STATUS = 0
BEGIN
    --取得した値を表示
    print 'Value -> ' + @VALUE;
 
    --次のデータを取得
    FETCH NEXT FROM cursor_split_test INTO @VALUE;
END
 
--カーソルを閉じる
CLOSE cursor_split_test;
DEALLOCATE cursor_split_test; 

実行結果は次の通りです。

実行結果
1
2
3
Value -> AAA
Value -> BBB
Value -> CCC 
スポンサーリンク
スポンサーリンク