首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将hashbytes字符串从sql转换为spark等效项

如何将hashbytes字符串从sql转换为spark等效项
EN

Stack Overflow用户
提问于 2020-12-10 04:51:58
回答 1查看 464关注 0票数 0

我在sql server中有一个使用以下select语句的进程。

代码语言:javascript
运行
复制
SELECT  HASHBYTES('SHA1', CAST('4100119300' AS NVARCHAR(100))) AS StringConverted

这将为您提供: 0x66A2F63C04A3A85347AD2F5CD99F1113F1BDD9CE

我一直在尝试在Spark SQL中重新创建同样的结果。

我在Spark里试过这个sha1(encode('4100119300','utf-8'))

但其结果是: b4cf5aae8ce3dc1673da4949cfdf2edfa33fdba4

在我的测试期间,如果我删除sql区域中的强制转换,结果在spark中是相同的。我看到的问题是,在spark中,你不能指定字符串的大小,或者可能在过程中改变了编码。我已经在sql中使用nvarchar(100)散列了数据,并且不可能将其从spark等效项中删除。

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2020-12-10 16:09:36

你看到这些不同之处了吗?

代码语言:javascript
运行
复制
SELECT HASHBYTES('SHA1', CAST('4100119300' AS NVARCHAR(100))) AS StringConverted
-- 0x66A2F63C04A3A85347AD2F5CD99F1113F1BDD9CE
代码语言:javascript
运行
复制
SELECT HASHBYTES('SHA1', '4100119300') AS StringConverted
-- 0xB4CF5AAE8CE3DC1673DA4949CFDF2EDFA33FDBA4

为了将varbytes存储为字符串,我使用带style = 1标志(CAST & CONVERT)的CONVERT

代码语言:javascript
运行
复制
SELECT CONVERT(VARCHAR(100), HASHBYTES('SHA1', '4100119300'), 1) AS StringConverted

这个就是你要找的。它是没有0x前缀的小写Sparks b4cf5aae8ce3dc1673da4949cfdf2edfa33fdba4

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65224698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档