【问题标题】:How to cast char without decimal point to decimal in Teradata?如何在 Teradata 中将没有小数点的字符转换为小数点?
【发布时间】:2021-09-19 15:44:06
【问题描述】:

我有一个字段,其中数据存储为 char(9)。内容是数字,实际上是十进制值。不幸的是,存储的值本身不包含小数点,只有数字。

我想将此值存储在小数(9,2) 字段中。我知道我可以使用字符串函数在正确的位置添加小数点,但我想知道是否有更好的方法来进行这种转换。也许使用 TO_NUMBER 和正确的格式字符串?

例子:

  • CHAR(9): '000123456' -> DECIMAL(9,2): 1234.56

【问题讨论】:

  • 请添加示例表数据,显示当前数据是什么,然后在这里也显示您想要的输出。
  • col / 100.00,避免错误数据可能的类型转换错误:trycast(col as decimal(10,0)) /100.00
  • @dnoeth 我不确定这是否比使用字符串函数更好,但它是一种可行的替代方法。谢谢!使用强制转换为十进制(10,0)而不是(9,0)是否有特定原因?
  • 不,当然 (9,0) 适合。无论如何,您都需要转换为数字,除以 100 可能比两个子字符串更有效。

标签: sql teradata


【解决方案1】:

如果你想避免使用字符串函数,转换为十进制然后除以 100 可能更容易

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多