H2 csvwrite:如何在十进制(7/2)列中用逗号替换小数点



表"PREIS_TAB"中的列编号为"E_PREIS decimal(7,2)"。在下面的示例中,H2-CSVWRITE在CSV输出中创建一个点"。"在"总结E-Preis"栏中,它按设计工作:

call CSVWRITE ('D:H2-DatabaseUser-DatenSQLH2-DB_01/E_PREIS_out.csv', '
               select DATUM          as "Datum"
                    , sum(E_PREIS)   as "Summe E-Preis"
                 from PREIS_TAB
                 group by DATUM 
                 order by DATUM desc
             ', 'charset=UTF-8 fieldSeparator=;');

但是,当我用Excel(位于德国)打开CSV文件时,"汇总E-Preis"列不会被解释为货币(Excel试图转换为不同的日期值),因为该列中的"."而不是","。

我尝试过REPLACE,但这只适用于CHAR字段:-(…和一些CAST变体也没有成功。

在这里的stackoverflow论坛上,我发现了以下提示,但仍然有一个SQL错误-显示为"N[*]"-或者我需要一个完全不同的语法:

     , cast(format((sum(E_PREIS)) , 'N', 'DE-DE') as varchar(20)) 

如何强制H2-CSVWRITE用十进制逗号
格式化"E_PREIS"的输出列而不是带小数点的(!)?

如果手动打开文件,则需要转到Data功能区上的Get External Data选项卡;选择From Text。文本导入向导将打开,并在步骤3中允许您指定值的格式。步骤3的高级选项卡允许您指定小数和千位分隔符。

如果您在VBA中打开它,可以使用Workbooks.OpenText方法

自动执行

最新更新