【问题标题】:Teradata SQL format a decimal fieldTeradata SQL 格式化十进制字段
【发布时间】:2020-11-19 15:51:03
【问题描述】:

我在 teradata 中有一个十进制字段 (19,4),我需要它的特定格式:

  • 组分隔符为点
  • 小数点作为逗号
  • 只有两位小数
  • 数字的整数部分必须按 3 x 3 分组

我已经尝试过 FORMAT、TO_CHAR 和 CAST 函数。我还在这些函数中尝试了 NLS_NUMERIC_CHARACTERS 参数。我想我在 TERADATA SQL 中缺少一些基本原理,我将不胜感激。

思路很简单:

SELECT some_decimal_field_in_proper_format_described_above
FROM some_table

【问题讨论】:

  • 请提供样本数据和期望的结果。

标签: sql teradata


【解决方案1】:

对于 CAST/FORMAT,组分隔符和小数分隔符由系统的 SDF“区域设置”确定。但是,如果你想要不同的东西,你可以使用 TO_CHAR 和 D 作为小数,G 作为格式字符串中的组分隔符和 NUMERIC_CHARACTERS 的自定义值:

TO_CHAR(x,'S999G999G999G999G990D99','NLS_NUMERIC_CHARACTERS = '',.''')

【讨论】:

  • 再问一个问题:你知道这个解决方案是否对查询性能有很大影响吗?
  • 不是什么大问题。对于大型答案集,CPU 消耗可能会略有增加。
猜你喜欢
  • 2013-07-29
  • 1970-01-01
  • 1970-01-01
  • 2021-10-27
  • 2013-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多