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