我在SQLServer中有一个使用以下select语句的进程
SELECT HASHBYTES('SHA1', CAST('4100119300' AS NVARCHAR(100))) AS StringConverted
这将为您提供:0x66a2f63c04a3a85347ad2f5cd99f1113f1bdd9ce
我一直在尝试在sparksql中重新创建同样的结果,但运气不好。
我试过了 sha1(encode('4100119300','utf-8'))
Spark
但其结果是:b4cf5aae8ce3dc1673da49cfdf2edfa33fdba4
在我的测试中,如果我删除sql区域中的强制转换,那么spark中的结果是相同的。我看到的问题是,在spark中,您不能指定字符串的大小,或者可能正在更改过程中的编码。我已经用nvarchar(100)散列了sql中的数据,不可能从spark等价物中删除它。
有什么建议吗?
1条答案
按热度按时间pxy2qtax1#
你看到这些区别了吗?
要将varbytes存储为字符串,请使用convert with
style = 1
标志(转换(&C)这就是你要找的。只是Spark而已
b4cf5aae8ce3dc1673da4949cfdf2edfa33fdba4
小写,不带0x
前缀。