SQL Server

SQLServerでカンマ区切り (CSV) で文字列取得

投稿日:2013/09/30 更新日:

SQLの取得結果をカンマ区切りで取得

Where句のINにSQLで取得した結果を直接利用したり
するのに、SQLServerで複数件存在するデータを
1行のカンマ区切りのデータとして取得して見ます。
(残念ですがOracleやMySQLなどではこの方法は通用しません。)

取得

カンマ区切りで取得するには列名を「data()」にすることで
アトミック値として処理し、その結果を「FOR XML PATH」を
利用して細工します。

取得結果

RESULT
太郎さん,次郎さん,三郎さん

取得した結果でカンマ区切り (CSV)ファイルを作成するには
便利です。

補足

カラムに付けている別名「data()」ですが、
パスを data() として指定した列の名前を参照すると


列名として指定したパスが "data()" の場合、生成される
XMLでは列の値がアトミック値として処理されます。

とあり、「data()」を他の名称「aaa()」のように変えると

RESULT
太郎さん
次郎さん
三郎さん

のように普通に取得してしまいます。

またアトミック操作とは不可分操作を参照すると


不可分操作(ふかぶんそうさ)あるいはアトミック操作 (Atomic Operation)
とは、情報工学においていくつかの操作を組み合わせたもので、
システムの他の部分から見てそれらがひとつの操作に見えるものをいう。

と言うことで、SELECT結果が複数件あっても1つの操作の結果に見えると。
う~ん、難しい。




-SQL Server
-, , , ,

Copyright© ソフトウェア開発日記 , 2017 AllRights Reserved.