- PR -

CSV出力時の数値桁数区切り

1
投稿者投稿内容
fruity
常連さん
会議室デビュー日: 2006/10/26
投稿数: 32
投稿日時: 2007-09-14 12:47
お世話になります。

現在.net2005のwebシステムを開発中です。
SQL(DB:Oracle10g)でテーブルよりデータを取ってきて、
出力する処理をしています。

早速質問なのですが、
CSV出力(ダウンロード)の際に金額の項目を3桁区切りにしたく、
SQLのTO_CHARで取るのですが(TO_CHAR(kingaku,'999,999,999,999'))、
当然カンマ区切りなので出力時に切れてしまいます。
これを回避する方法をご教授いただければと思います。

すいませんが宜しくお願いいたします。


KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-09-14 12:55
ダウンロードさせた後、何に使うのでしょう?

普通はデータ中にカンマが含まれる場合は、
ダブルクォーテーションでくくって回避します。

ですが、どちらかというとCSVにカンマを入れるという仕様がおかしい気がします。
データとしては数字でいいんですから、それを読み込んで表示する側で、
カンマ区切りにして表示するとかにはできないんでしょうか?
fruity
常連さん
会議室デビュー日: 2006/10/26
投稿数: 32
投稿日時: 2007-09-14 14:58
KIさん
返答ありがとうございます。

ダウンロード後、一覧としてユーザーが見れるようにしたいです。
また、そのデータを他システムに取り込みます。

CSV上で見る際に見にくいのでそのような要望がありました。
ファイルのほうでわざわざ編集するのが面倒なので出力の際に編集済み
だと良いという話です。

この辺の処理方式で何か良い方法が無いかという事で
挙げさせて頂きました。

また、
VB.net上で
strSql= "Select"
----省略---
" to_char(kingaku,'999,999,999,999'), "
" from XXXX"
----省略---

での場合のダブルクォーテーションは
どのように追加ですか?
追加するとVBのほうで文字列として認識されてしまい・・
うまくいきません。

すいませんが宜しくお願いいたします。
Ahf
大ベテラン
会議室デビュー日: 2006/08/16
投稿数: 172
投稿日時: 2007-09-14 15:20
oracleだとchr関数ですかね。
コード:
chr(34) || to_char(kingaku,'999,999,999,999') || chr(34)


とか。

SQL文で編集するならこんな感じでどうでしょう。
個人的には抽出後に区切を付与するほうが後々楽かなぁ、なんて思います。
未記入X
大ベテラン
会議室デビュー日: 2005/05/19
投稿数: 136
投稿日時: 2007-09-14 15:21
参照用はExcelのファイルを出力。
他システム向けは3桁区切りなど入れないCSVファイルを出力。

このように用途に応じて出力処理も分ければ宜しいのではないでしょうか。

CSV形式のファイルに見た目を求めない方が良いと思います。
(例)CSVをExcelで開いた際に、"00001"という項目が"1"と表示される等

Excel出力などを追加実装したほうが総合的に見て楽ではないでしょうか。ご一考下さい。

[ メッセージ編集済み 編集者: 未記入X 編集日時 2007-09-14 15:23 ]
fruity
常連さん
会議室デビュー日: 2006/10/26
投稿数: 32
投稿日時: 2007-09-14 15:37
Ahfさん、未記入Xさん
返答ありがとうございます。

頂いたSQL文編集の方法でできました。
また、仰るとおりExcel出力などを追加実装という事も確かに。。
と思いました。
参考にさせていただきます。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)