fc2ブログ

(元)社内SEの徒然なる日記

SQLテクニック(ダブルクォートの置換)

CSVだよ

SELECT文の実行結果を、CSVでダウンロードするっていう処理があります。
ちなみに、SQLでは単純にデータ抽出だけを行って、JavaでCSV形式へ変換させています。
CSV編集では、項目の前後に"(ダブルクォート)を追加しています。

ダウンロードしたCSVは、そのままExcelで表示するのですが、抽出結果に"(ダブルクォート)が入ってくる場合、Excel側で項目の区切りが正しく判定できない状態で表示されてしまいます。

うーむ。
そこそこ優秀なソフトだと、項目内に"(ダブルクォート)があっても表示してくれるんですけど、Excelはダメみたいですね。

変換する

まぁ、対応方法はいくらか考えついたのですが、今回はSELECT文の実行時に、"(ダブルクォート)を'(シングルクォート)に置換することにしました。

サンプル1

REPLACE関数を使用します。
シングルクォートを二つ並べることで、一つのシングルクォートとして扱います。

SELECT 担当者コード ,
REPLACE( 担当者コード , '"' , '''' )
FROM 担当者マスタ


サンプル2

上記の方法でも良いんですけど、シングルクォートを4つも並べるのが気持ち悪い。
...いや、個人的に嫌いなだけなんですけどね。
なので、CHR関数を使ってみました。

SELECT 担当者コード ,
REPLACE( 担当者コード , CHR(34) , CHR(39) )
FROM 担当者マスタ


CHR関数は、引数で指定した文字コードから値を返却する関数です。
この場合、CHR(34)がダブルクォート、CHR(39)がシングルクォートですね。


スポンサードリンク

PageTop

コメント


管理者にだけ表示を許可する