如何比较雪花中的数字字符串
Posted
技术标签:
【中文标题】如何比较雪花中的数字字符串【英文标题】: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 之间
这里有两个问题
-
字符串比较给出错误输出。
我无法使用 cast 或 to_number 函数将其转换为数字,因为字符串值超过 38 位。
【问题讨论】:
【参考方案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
这是简化的情况,如果涉及负数或分数将不起作用。
【讨论】:
以上是关于如何比较雪花中的数字字符串的主要内容,如果未能解决你的问题,请参考以下文章