【问题标题】:how to compare numeric string in snowflake如何比较雪花中的数字字符串
【发布时间】:2021-06-22 11:58:33
【问题描述】:

在雪花中,数字数据类型支持 38 位长度。 为了存储超过 38 位的值,我使用了 varchar 数据类型。 我有两组表,

表1:

  • 块 varchar
  • numberstart varchar
  • numberend varchar

表2

  • 数字变量

我想查看 table1 中的块详细信息,其中 table2.number 存在于 table1.numberstart 和 table2.numberend 之间

这里有两个问题

  1. 字符串比较给出错误输出。
  2. 我无法使用 cast 或 to_number 函数将其转换为数字,因为字符串值超过 38 位。

【问题讨论】:

    标签: string snowflake-cloud-data-platform


    【解决方案1】:

    您可以将LPAD 值设置为通用大小,然后执行字符串比较

    SELECT*
    FROM table2 t2
    JOIN table1 t1
      ON LPAD(t2.number, 50, '0') BETWEEN LPAD(t1.numberstart, 50, '0') 
                                      AND LPAD(t1.numberend,   50, '0');
    

    db<>fiddle demo

    这是简化的情况,如果涉及负数或分数将不起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-19
      • 1970-01-01
      • 1970-01-01
      • 2020-01-31
      • 1970-01-01
      • 2014-04-29
      • 1970-01-01
      • 2013-05-06
      相关资源
      最近更新 更多