【问题标题】:Numeric value error for small select query in snowflake雪花中小选择查询的数值错误
【发布时间】:2019-10-25 21:00:58
【问题描述】:
select to_varchar(nvl(cdi_source,'')) as  cd 
from customer_address 
WHERE best_address_ind = 1;

得到类似的错误

Numeric value 'posp' is not recognized.

cdi_source字段有这样的数据

12    KSRELP
 2    NMCAPT
 3    2018-11-12 00:00:00
 4    2019-03-15 0

【问题讨论】:

  • 可以分享一下表格每一列的类型吗?这可以通过 DESC TABLE customer_address 来完成;
  • 如果你有一个 where 子句将正确过滤第二列结果为只有一种类型和to_number或类似的, to_number 将失败不具有类型的行(这也使过滤器失败)。他们打破了 ANSI 的操作顺序,以获得速度。因此,仅供参考,如果您有变体类型,则应使用 TRY_TO_x 以确保安全。

标签: snowflake-cloud-data-platform


【解决方案1】:

我同意前面的回答。

尝试像这样使用 TRY_TO_NUMBER 运行您的查询:

select to_varchar(nvl(cdi_source,'')) as cd 
from customer_address 
WHERE try_to_number(best_address_ind) = 1;

【讨论】:

  • 明白了,比较数据的时候应该匹配数据类型。
【解决方案2】:

此错误的一个可能原因是best_address_ind 是 varchar 等列,并且一行包含值 posp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    相关资源
    最近更新 更多