我们正在将SQL服务器命令/脚本迁移到雪花SQL,并陷入了这个特定的查询。我们一直在使用Server中的HASHBYTES函数将此字符串哈希为SHA1算法。不幸的是,我们的SQL server命令的输出与雪花或任何其他转换器不匹配。
Server代码:
select hashbytes('sha1',cast('214163915155286001' as varchar(18)))Server输出:
"GRHT33lIRvvHTg5M8pEzRZRm4Oc="我们尝试用雪花编写上面的代码,如下所示:
雪花SQL:
Select sha1('214163915155286001')雪花产量:
"1911d3df794846fbc74e0e4cf29133459466e0e7"我们使用任何其他标准SHA1转换器获得相同的输出,但现在我们需要的值与从获得的值完全相同。
发布于 2022-01-11 15:40:35
您可以使用以下转换在雪花中获得相同的结果:
select to_char(to_binary(sha1('214163915155286001'), 'hex'), 'base64') as Result;
+------------------------------+
| RESULT |
+------------------------------+
| GRHT33lIRvvHTg5M8pEzRZRm4Oc= |
+------------------------------+这是一种魔力:)
发布于 2022-01-12 20:43:47
Gokhan的回答是如何得到你想要的答案。但了解你所拥有的也许会有帮助,
"1911d3df794846fbc74e0e4cf29133459466e0e7"是SHA1哈希,表示为哈希的字符串。如果您正在对数据SHA1进行比较,以检查“相同而不更改”(SHA1 1确认此功能的能力极限),您将使用该方法。
"GRHT33lIRvvHTg5M8pEzRZRm4Oc="是BASE64编码的字符串。通常的赠品是=末端的等价物。但是,在可打印令牌范围内,base64并不总是将3x2^8 (256)二进制数据编码为4x2^6 (64)流的块。
https://stackoverflow.com/questions/70668869
复制相似问题