string - 如何比较雪花中的数字字符串
问题描述
在雪花中,数字数据类型支持 38 位长度。为了存储超过 38 位的值,我使用了 varchar 数据类型。我有两组桌子,
表格1:
- 块 varchar
- numberstart varchar
- numberend varchar
表2
- 数字 varchar
我想查看 table1 中的块详细信息,其中 table2.number 存在于 table1.numberstart 和 table2.numberend 之间
这里我有两个问题
- 字符串比较给出错误的输出。
- 我无法使用 cast 或 to_number 函数将其转换为数字,因为字符串值超过 38 位。
解决方案
您可以将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');
这是简化的情况,如果涉及负数或分数,它将不起作用。
推荐阅读
- java - 帧初始化后多次调用paintComponent
- filenet-p8 - 如何在 FileNet P8 保存的搜索中为 ClassDescription 属性设置别名?
- node.js - 电子节点-Gyp 库未加载:dylib
- c++ - 泰语本地化中的音调标记在 C++/DirectX 渲染中呈现为单独的字符
- javascript - JavaScript 已链接,但不会显示在 Chrome 开发者控制台中
- python - Alexa Python Skill 获取口语值而不是插槽 id
- tensorflow - 在 tensorflow 中,是否可以看到其他模型构建结构?
- graph-theory - 计算诱导子图,对路径而不是边进行归纳
- python - 如何在 python 中用海龟写我的名字?
- javascript - 拒绝加载脚本“https://apis.google.com/js/platform.js”,因为它违反了以下内容安全政策