我试图得到一个十进制值的散列并将其转换为整数。但是查询会导致以下错误: Numeric value 'b902cc4550838229a710bfec4c38cbc7eb11082367a409df9135e7f007a96bda' is not recognized
```
SELECT (CAST(sha2(TO_VARCHAR(ABS(12.5)), 256) AS INTEGER) % 100) AS temp_value
在snowflake中,将哈希字符串转换为整数的正确方法是什么?我不能使用任何用户定义的函数。而且必须配合雪花的原生功能。
3条答案
按热度按时间nmpmafwu1#
哈希值包含字母字符,因此会引发错误
5w9g7ksd2#
您需要将哈希编码中的十六进制值转换为int。
我还没有找到一个内置在snowflake中的函数可以实现这一点,但是如果您查看以下链接,它将解释如何创建javascript函数来为您进行转换:https://snowflakecommunity.force.com/s/article/faq-does-snowflake-have-a-hex-to-int-type-function
如果使用链接中的函数,则代码会变成这样:
我恐怕无法测试上面的代码,所以可能有一个括号放错了地方。。。
lyfkaqu13#
你有一个56位的十六进制数。它不符合38的最大数字精度。您可以使用浮点数,但这将失去精度。