string_agg と string_split

SQLserverでGroup concatみたいな、縦の列のCSVみたいなことは以前書いた様に
for xml path を使ってできていたのですが何度見ても難解で覚えられないクエリでした。

SQLserver2017 からはstring_agg関数で
string_agg(column,’,’) within group (order by Seqcolumn asc)
などと簡単にできる様になりました。
これならなんとか覚えられそうです。

これでCSVを作っておいて
select * from string_split(‘CSV’,’,’)
とかやれば配列みたいなこともできそうな・・
ついでに何番目の要素とかも返してくれる関数があるとありがたいのですが今のところなさそうです。
文字列操作でできるとは思いますが何万列とかになると負荷高すぎてだめかな、たぶん。
IDのあるテーブルにinsertすればよさげな気がする。

string_agg は文字列を返しますが
string_split テーブルで返ってきます。 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です