【问题标题】:TO_NUMBER - returning $TO_NUMBER - 返回 $
【发布时间】:2014-01-29 07:37:31
【问题描述】:

我无法理解为什么以下查询会返回给定结果。

查询 1:

SELECT TO_NUMBER('$1,000.95', '$999,999.999')
FROM dual;

返回1000.95

为什么这个查询不返回$1000.95$1,000.95TO_NUMBER 函数是否会删除所有格式(. 除外)?

查询 2:

SELECT TO_NUMBER('1,000.95', '$999,999.999')
FROM dual;

返回ORA-01722: invalid number

我想我对这一点的理解有点更好 - 格式掩码与数字格式不匹配。有没有办法在号码中返回$(除了使用CONCAT||)?

【问题讨论】:

    标签: sql oracle number-formatting


    【解决方案1】:
     SELECT TO_NUMBER('$1,000.95', 'L999G999D999') FROM dual;
    

    【讨论】:

      【解决方案2】:

      函数 TO_NUMBER 返回一个数字,$ 字符是 ASCII 并且永远不会在数字字段中表示。要添加 $ 字符,您需要将数字表示为字符串。

      【讨论】:

      • 谢谢 - 非常清楚。数字.-中唯一可能的字符是可用的,还是有其他的?
      • 嗯,这也取决于您的操作系统或软件如何向您呈现数字,并且可能受本地/货币/等设置的影响,它不会像 DB 那样存储
      猜你喜欢
      • 1970-01-01
      • 2020-06-11
      • 2011-05-28
      • 2017-12-19
      • 2016-09-14
      • 1970-01-01
      • 2021-07-22
      • 2018-08-20
      • 1970-01-01
      相关资源
      最近更新 更多