【问题标题】:Conversion of decimal separator - DB2 SQL小数点分隔符的转换 - DB2 SQL
【发布时间】:2022-06-10 20:17:31
【问题描述】:

我想将 DB2 SQL 中带有 ',' 逗号小数分隔符的双值列转换为 '.'点小数分隔符。我的本地设置是德语。由于涉及许多应用程序,我无法更改数据库设置。

例如:列值 =0,81234 我希望它显示为 0.81234。

SELECT CAST(CAST(COLUMNNAME AS DECIMAL(8,2)) AS VARCHAR(25)) 

我尝试先将其转换为 decimal(8,2),然后再转换为 varchar。这导致 0.81(如预期的那样带有“.”)。但我需要小数点分隔符右边的所有数字,如 0.81234。所以,我尝试使用小数(7,6),结果为SQL0413N OVERFLOW OCCURRED DURING NUMBER DATA TYPE CONVERSION error.

还有其他方法可以将小数点分隔符显示为“.”吗?

【问题讨论】:

  • decimal(7,6) 表示总共 7 位数字,其中 6 位是小数。例如。 1.234567.
  • 谢谢,我改成更高的数值了。查询运行良好。对于某些值,例如: 10 ,它显示为 10.000000。现在我希望这些值修剪尾随零并仅显示为 10。当值为 12.345000 时,则为 12.345
  • 你不能让表示层处理这个吗?
  • 遗憾的是,结果被导出并直接通过 FTP 传输到完成计算的另一层。因此,想在 SQL 代码本身中实现一个逻辑。
  • 该层真的担心尾随的十进制 0 吗?

标签: sql db2 decimal implicit-conversion separator


【解决方案1】:

分隔符实际上并未存储在数字列的数据库中。

配置您使用的任何工具来查看数据以使用您选择的分隔符。

您可以选择运行
set option decmpt = *PERIOD;

在运行您的选择之前。

【讨论】:

  • 谢谢,不幸的是,更改工具设置以使用分隔符作为句点不起作用。因此试图通过SQL来实现。
【解决方案2】:

如果您使用 JDBC,您可以通过调整连接字符串来修改它。只需添加此

:decimalSeparator=1;

点作为小数分隔符或 2 表示逗号作为小数分隔符

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 2015-10-20
    • 1970-01-01
    相关资源
    最近更新 更多