首页 > 解决方案 > 获取 SQL Server 中 UTF-8 编码字符串的 MD5 哈希值

问题描述

据我了解,SQL Server 提供了两种用于存储字符串的数据类型——用于 8 位 ISO 编码的 VARCHAR 和用于 UTF-16 的 NVARCHAR。问题是我需要使用 SELECT 来检索 UTF-8 编码字符串的 MD5。

这是必需的,因此我不会从服务器读取任何个人数据以存储在仓库中,但我仍然会为每个(例如电子邮件地址)获得一个唯一值,以与来自其他使用正确的来源的数据相匹配UTF-8。

假设我们有以下字符串:

' SIRIO SOCIETÀ COOPERATIVA ' 存储在第 1 行名为“nomeCompleto”的 VARCHAR 列中。

SELECT hashbytes('MD5',nomeCompleto) FROM sampleTable WHERE row_id = 1

返回以下字节

0xF5F3DA4E538693D68C27F7B24948D348

在 Unicode 中:

SELECT hashbytes('MD5',CONVERT(NVARCHAR(max),nomeCompleto))

当我将它转换为 NVARCHAR 时,我得到:

0x7FDCB5E7E91D01177B124F1A5BE218B1

问题是,如果相同的字符串来自使用 UTF-8 的某个 API 或另一个 RDMBS,并且我对其进行 md5 编辑,我宁愿得到:

0x27380195AA7488AE0CD5CD96A13932B3

如何在不编写自定义函数等的情况下从 SQL 服务器检索第三个值?

标签: sqlsql-serverencodingutf-8etl

解决方案


推荐阅读