【问题标题】:IS_REAL for subtraction of words in snowflakeIS_REAL 用于减去雪花中的单词
【发布时间】:2021-12-28 16:39:32
【问题描述】:

我有一个名为报纸_cd 的列,例如可以是 A129 或 FHID。我需要先从右侧提取三个数字,然后在雪花中添加一个条件表达式。问题是当前列是字符串,即使右边3位是数字,仍然被认为是字符串。

case when is_real(to_variant(right(newspaper_cd,3))) = True then 1 else 0
---  I got all 0s, because it is a string column

--- If I change it for a number thinking about the case like A129
to_number(right(newspaper_cd,3))
--- 'HID' is not recognized for 'FHID'

那我该怎么处理呢?谢谢。

【问题讨论】:

    标签: snowflake-cloud-data-platform


    【解决方案1】:

    使用TRY_TO_NUMBER

    SELECT newspaper_cd, TRY_TO_NUMBER(right(newspaper_cd,3)) IS NOT NULL
    FROM tab
    

    输出:

    A129  True
    FHID  False
    

    【讨论】:

      【解决方案2】:

      您也可以在具有如下 varchar 的列上应用 SUBSTR

      select
          CASE
              WHEN IS_REAL(TO_NUMBER(substr(newspaper_cd, -3, 3))) = TRUE THEN 1
              else 0
          end;
      

      【讨论】:

      • 谢谢。这对我有用
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-15
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多