表"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
方法