我正在尝试匹配 SQL Server 和 Snowflake 中表中某些数据的 sha1 值。
我通过以下方式在 SQL 服务器中获得了拉丁字符的 sha1 -
select sys.fn_varbintohexsubstring(0, HASHBYTES('SHA1',cast('á' as varchar(1))),1,0)
这将返回 b753d636f6ee46bb9242d01ff8b61f715e9a88c3
Snowflake 中的 sha1 函数为同一个字符返回不同的值。
select sha1(cast('á' as varchar))
Result - 2b9cc8d86a48fd3e4e76e117b1bd08884ec9691d
注意 - SQL Server 中的数据类型是 nvarchar,而 Snowflake 中的数据类型是带有默认排序规则的 varchar。对于英文字符,将 nvarchar 转换为 varchar 后 sha1 值匹配。但是,拉丁字符并非如此。
有没有办法匹配非英语字符的 sha1 值?我需要在 SQL Server 2017 及更低版本中获取值 '2b9cc8d86a48fd3e4e76e117b1bd08884ec9691d',因为它是 Oracle、Snowflake 和 Hive 等其他数据库返回的值。
谢谢