簡體   English   中英

獲取 SQL 服務器中 UTF-8 編碼字符串的 MD5 hash

[英]Get and MD5 hash of an UTF-8 encoded string in SQL Server

據我了解 SQL 服務器提供了兩種用於存儲字符串的數據類型——用於 8 位 ISO 編碼的 VARCHAR 和用於 UTF-16 的 NVARCHAR。 問題是我需要用 SELECT 檢索 UTF-8 編碼字符串的 MD5。

這是必需的,因此我不會從服務器讀取任何個人數據以存儲在倉庫中,但我仍然會為每個數據(例如 email 地址)獲得一個唯一值,以與來自其他使用適當來源的數據相匹配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

問題是,如果相同的字符串來自一些 API 或另一個使用 UTF-8 的 RDMBS,並且我對其進行 md5 編輯,我寧願得到:

0x27380195AA7488AE0CD5CD96A13932B3

如何在不編寫自定義函數等的情況下從 SQL 服務器檢索第三個值?

您可以嘗試以下方法(SQL Server 2019):

SELECT HashBytes('MD5', CAST (N'SIRIO SOCIETÀ COOPERATIVA' COLLATE Latin1_General_100_CI_AI_SC_UTF8 AS varchar(4000)))

=> 0x93E20A6CB6CE6F8945123D6ADC75E30C

在線試用 MD5: https://emn178.github.io/online-tools/md5.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM