【问题标题】:IBM Netezza, How to convert a varchar to a numeric with TO_NUMBER(..., ...)IBM Netezza,如何使用 TO_NUMBER(..., ...) 将 varchar 转换为数字
【发布时间】:2013-08-28 14:42:29
【问题描述】:

我在 Netezza 数据库中有名为 DART_STG1 的表。该表有一个 varchar 列。我正在尝试使用下面的 SQL 将 varchar 转换为数字,但它总是会引发错误。

代码

SELECT DISTINCT TO_NUMBER(M12,'99G99') 
FROM   DART_STG1 
WHERE  M12 IS NOT NULL;

引发错误:

错误 [HY000] 错误:错误的数字输入格式

这个错误是什么意思?

【问题讨论】:

  • SELECT DISTINCT M12 FROM DART_STG1 WHERE M12 IS NOT NULL; 的结果是什么?根据错误消息,我的猜测是一条或多条记录具有无法转换的数据,因此您可能需要进行一些数据按摩才能使其正确转换。
  • 数据按摩是什么意思?
  • 我在执行那个 SQL 查询时没有得到任何输出。
  • 我有 NOT NULL 和 NULL 值。

标签: sql database netezza


【解决方案1】:

PDA (Netezza) Conversion functions page 提供示例,与Template patterns 一起,您可以选择合适的格式。

但是,我的数据集出现了同样的错误。我怀疑这与 STORE_NUMBER 中值的格式有关,这是 Netezza 不喜欢的。

【讨论】:

    【解决方案2】:

    错误:

    ERROR [HY000] ERROR: Bad numeric input format 
    

    是因为您将字母输入TO_NUMBER。你喂它99G99 这不是一个数字。

    程序试图通过告诉您数字输入格式错误来告诉您它不是数字,正如错误非常清楚地表明的那样。

    【讨论】:

    • 如何使用TO_NUMBER函数将字符串转为整数?
    • to_number(STORE_NUMBER, '999') - 即使这样也会返回错误。这里的实际问题是“正确的输入格式应该是什么?”我们都知道错误信息在英语中的含义。
    猜你喜欢
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2011-12-31
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多