需要 SQL 使用 Snowflake SHA1/standard SHA1 函数的服务器 HASHBYTES SHA1 输出
Need SQL Server HASHBYTES SHA1 output using Snowflake SHA1/standard SHA1 function
我们正在将 SQL 服务器 commands/scripts 迁移到 Snowflake SQL,但遇到了这个特定查询。我们一直在 SQL 服务器中使用 HASHBYTES 函数将此字符串散列为 SHA1 算法。不幸的是,我们的 SQL 服务器命令的输出与雪花或任何其他转换器不匹配。
SQL 服务器代码:
select hashbytes('sha1',cast('214163915155286001' as varchar(18)))
SQL 服务器输出:
"GRHT33lIRvvHTg5M8pEzRZRm4Oc="
我们尝试在 snowflake 中编写上面的代码,如下所示:
雪花SQL:
Select sha1('214163915155286001')
雪花输出:
"1911d3df794846fbc74e0e4cf29133459466e0e7"
我们使用任何其他标准 SHA1 转换器获得相同的输出,但现在我们需要与从 SQL 服务器 HASHBYTES 获得的值完全相同。
您可以使用以下转换在 Snowflake 中获得相同的结果:
select to_char(to_binary(sha1('214163915155286001'), 'hex'), 'base64') as Result;
+------------------------------+
| RESULT |
+------------------------------+
| GRHT33lIRvvHTg5M8pEzRZRm4Oc= |
+------------------------------+
这是一种魔法:)
Gokhan 的答案是如何得到你说你想要的答案。但是了解您拥有的东西可能会有所帮助,
"1911d3df794846fbc74e0e4cf29133459466e0e7"
是 SHA1 散列,显示为散列的字符串。如果您正在对数据 SHA1 进行比较以检查内容是否“相同且未更改”(在 SHA1 确认这一点的能力范围内),您将使用它。
"GRHT33lIRvvHTg5M8pEzRZRm4Oc="
是一个 BASE64 编码的字符串。正常的赠品是最后的 equals =
。但这些并不总是存在,因为 base64 将 3 x 2^8 (256) 二进制数据块编码为可打印标记范围内的 4 x 2^6 (64) 流。
我们正在将 SQL 服务器 commands/scripts 迁移到 Snowflake SQL,但遇到了这个特定查询。我们一直在 SQL 服务器中使用 HASHBYTES 函数将此字符串散列为 SHA1 算法。不幸的是,我们的 SQL 服务器命令的输出与雪花或任何其他转换器不匹配。
SQL 服务器代码:
select hashbytes('sha1',cast('214163915155286001' as varchar(18)))
SQL 服务器输出:
"GRHT33lIRvvHTg5M8pEzRZRm4Oc="
我们尝试在 snowflake 中编写上面的代码,如下所示:
雪花SQL:
Select sha1('214163915155286001')
雪花输出:
"1911d3df794846fbc74e0e4cf29133459466e0e7"
我们使用任何其他标准 SHA1 转换器获得相同的输出,但现在我们需要与从 SQL 服务器 HASHBYTES 获得的值完全相同。
您可以使用以下转换在 Snowflake 中获得相同的结果:
select to_char(to_binary(sha1('214163915155286001'), 'hex'), 'base64') as Result;
+------------------------------+
| RESULT |
+------------------------------+
| GRHT33lIRvvHTg5M8pEzRZRm4Oc= |
+------------------------------+
这是一种魔法:)
Gokhan 的答案是如何得到你说你想要的答案。但是了解您拥有的东西可能会有所帮助,
"1911d3df794846fbc74e0e4cf29133459466e0e7"
是 SHA1 散列,显示为散列的字符串。如果您正在对数据 SHA1 进行比较以检查内容是否“相同且未更改”(在 SHA1 确认这一点的能力范围内),您将使用它。
"GRHT33lIRvvHTg5M8pEzRZRm4Oc="
是一个 BASE64 编码的字符串。正常的赠品是最后的 equals =
。但这些并不总是存在,因为 base64 将 3 x 2^8 (256) 二进制数据块编码为可打印标记范围内的 4 x 2^6 (64) 流。