【问题标题】:Can data type "Numeric" support negative numbers in PostgreSQL? [duplicate]数据类型“数字”可以在 PostgreSQL 中支持负数吗? [复制]
【发布时间】:2018-11-09 18:56:40
【问题描述】:

我有一列从-100+100 的数字。它们在小数点后有 0 到 9 个值。以下是一些示例:-32.1235, -5.1234, -12, 6, 6.3, 9.0

我正在尝试将它们放入表中,但收到错误 -

数字类型的输入语法无效:“-”

我尝试将数据类型更改为decimal,但我发现它一直恢复为numeric。而且,我希望这些数字能够准确存储。

如何为数字输入负数?

编辑:还有另一个post 建议只使用数字数据类型。我已将数据转换为数字,但仍收到无效的输入语法消息。

【问题讨论】:

    标签: database postgresql precision sqldatatypes


    【解决方案1】:

    我最好的猜测是您使用的字符看起来像负号,但不是。顺便说一下,numericdecimal 是相同的数据类型。正如documentation 解释的那样:

    十进制和数字类型是等价的。这两种类型都是 SQL 标准的一部分。

    以下对我来说很好用:

    select x, cast(x as decimal(10, 2)), cast(x as numeric(10, 2))
    from (values (-32.1235), (-5.1234), (-12), (6), (6.3), (9.0) ) v(x);
    

    而且,正如预期的那样,结果是一样的。 Here 是一名rextester。

    【讨论】:

    • 如何获得一个真正的负号字符?
    • @Sebastian 。 . .在我的关键字上,0 旁边的连字符可以正常工作。如果这不起作用,那么您可以尝试从上面的代码中复制字符。
    • 我想我知道它为什么不起作用。底片被格式化为 (1,232.12) 并且我的查询中有这个函数:replace(replace(trim(replace("ColumnA", ',', '')),'(','-'),')' ,'') AS "ColumnAFormatted",
    • 有没有更好的方法来重新格式化这些数字?它们作为字符串存储在我从中提取的表中。
    猜你喜欢
    • 2019-12-30
    • 1970-01-01
    • 2020-07-19
    • 2018-09-05
    • 2012-08-04
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多