Oracle – 后台处理为CSV文件,但Excel将“$ 10,000”分成两列

我有一个命令如下:

SPOOL &&p_CSVfile SELECT YEAR || ', ' || TO_CHAR(AMOUNT, '$9,999,999,999.99') FROM TABLE SPOOL OFF 

…和AMOUNT字段中的值可以包含逗号。 当这个文件在Microsoft Excel中打开时,AMOUNT字段被视为两个单独的字段,如果它包含一个逗号。 有没有一个简单的方法,我不知道,或者我将不得不改变我的分隔符?

CSV将每个逗号分隔的值用双引号括起来。 你的每个值都用双引号吗? 如果不,

考虑:(复制并粘贴到记事本另存为csv)

 "This is a","test" "This is,a","test" 10,000,500 "$10,000","500" "And she said, ""Hello my love""","end" 

第1,2,4,5行仅导致2列。 3行结果3.行情关系。

所以…要解决添加开始/结束“到你输出的每个值(什么是”CHR(34)?)

 SELECT chr(34) || YEAR || chr(34) ||',' || chr(34) || AMOUNT ||chr(34) FROM TABLE 

如果你的导出的string数据中有引号…只需将它们加倍,以正确地逃脱。

把你的价值用双引号'"' || Amount || '"'

完整的例子

 SPOOL &&p_CSVfile SELECT '"' || YEAR || '","' || AMOUNT || '"' FROM TABLE SPOOL OFF 

如果您在特定字段中不需要逗号,也可以REPLACE它们,即REPLACE(Amount,',','')