【发布时间】: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 可能比两个子字符串更有效。