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つの操作の結果に見えると。
う~ん、難しい。

当サイトのおすすめ記事

パソコン 1

初心者でも失敗しないレンタルサーバーの選び方ですが、最近ではブログを立ち上げて、そこから広告収入を得る「アフィリエイト」が随分一般的になりました。 私の周りでも実際にやっている人が多くいます。 アフィ ...

プログラミング 2

SQLでIFを書けばWHERE句の内容を変えて検索できますが、条件ごとに同じようなSQLを 複数回書くのは面倒なので、1行で分岐できないかと言う事でSQLを作って見ました。 SQLでIFを使わずに条件 ...

SQLServer 3

SQLServerで発生するエラーコードをSQLで取得する SQLServerで発生したエラーコードの内容を メッセージが定義されているテーブルから取得します。 エラーコードを取得するSQL SQLs ...

4

SQLServerでは「ユーザー定義型」と呼ばれる独自のテーブル型をした戻り値を返す関数を作成することができます。 その作り方と使い方を解説します。 SQLServerでテーブル型を戻り値とする関数を ...

5

アフィリエイトでいきなり成果を出すのは難しいです。 でも、成果がないとレンタルサーバー代やドメイン代がペイできません。 しかも長い間、結果がでないとやる気もなくなってしまいます。 そういったことを防ぐ ...

-SQL Server
-, , , ,

Copyright© ソフトウェア開発日記 , 2018 All Rights Reserved.