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

公開日: : 最終更新日:2014/05/19 SQL Server , , , ,

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

スポンサーリンク
スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • 13 follow us in feedly

関連記事

CREATE TABLE,ALTER TABLEでテーブルのプライマリーキー(PK)を作成する

SQL ServerでSQLを使用してプライマリーキー(PK)を作成します。 テーブル作成時(

記事を読む

SQLServer

SQLServerでクライアントのIPアドレスを取得する

SQLServerでクライアントのIPアドレスを取得する SQLを発行したクライアントのIPアドレ

記事を読む

SQLで存在しない行を生成し固定行数で処理したい時に役立つ方法

帳票データなどで登録されているデータ数に左右されず、 固定行数でデータを取得したい場合があります。

記事を読む

ALTER TABLEのALTER COLUMNで「列 ‘xxxxx’ に依存しています」とエラーになる

ALTER COLUMNで「列 'xxxxx' に依存しています」とエラー SQLServerでカ

記事を読む

SQLServer

bcpコマンドを使ってBULK INSERT用のフォーマットファイルを出力する

bcpコマンドを使ってBULK INSERT用のフォーマットファイルを出力する bcpコマンドを使

記事を読む

テーブルから列を削除する「ALTER TABLE テーブル名 DROP COLUMN 削除する列名」

既存のテーブルから指定した列を削除する 既存のテーブルで不要になった列を削除する方法です。

記事を読む

SQLで大文字、小文字変換を行う

SQLで大文字⇔子文字変換を行う SQLで大文字⇔小文字変換を行うには「UPPER関数」と「LOW

記事を読む

集計関数COUNT()でのNULLの扱い

集計関数COUNT()でのNULLの扱いは注意が必要 集計関数のCOUNT()は条件にマッチす

記事を読む

SQLサーバ

SQLServerでROW_NUMBER()を使って連番を採番する

ROW_NUMBER()で連番を取得する SQLServerでROW_NUMBER()関数を使うと

記事を読む

SQLで文字列を反転させる

SQLで文字列を反転させる SQLで文字列を"012345"を後ろから並び変えて"543210"の

記事を読む

Message

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


*

SQLServer
テーブルのプライマリキー(PK)を取得する(SQL編)

SQLServerでテーブルのプライマリキー(PK)をSQLで取得する

日付の重複をSQLで検索する

SQLを使って期間の重複を見つけ出す SQLを使って、開始日付、終了

SQLServerのエラーコードを取得するSQL

SQLServerで発生するエラーコードをSQLで取得する SQLS

SQLServer
指定した値と同じ場合はNULLを返すNULLIF関数

使いどころがいまいち不明な「NULLIF()」 SQLServerに

SQLServerではTRIM関数がありません

SQLServerでは空白を取り除くTRIM関数がない SQLSer

→もっと見る



PAGE TOP ↑