SELECT LOWER(CONVERT(VARCHAR(32), HASHBYTES('MD5', 'a'), 2));
结果:
0cc175b9c0f1b6a831c399e269772661
这样就可以了。
SELECT LOWER(CONVERT(VARCHAR(32), HASHBYTES('MD5', '啊'), 2));
结果:
795d6a1c51f0ac4b0856f5cac1846f3f
正确的结果是
04c16ff7b157d4b4702bb24aa62651a5
为什么我得到错误的结果?
请解答我的问题,谢谢!
要获得所需的结果,您需要获取字符串的 UTF8 编码 的 MD5 哈希值。这可以通过对字符串应用 UTF8 排序规则并转换为
VARCHAR
来完成。还需要在字符串文字中添加 N
前缀。
SELECT LOWER(CONVERT(VARCHAR(32), HASHBYTES('MD5',
CONVERT(VARCHAR(MAX), N'啊' COLLATE Latin1_General_100_CI_AI_SC_UTF8)
), 2));
结果:
04c16ff7b157d4b4702bb24aa62651a5
与这个MD5在线编码网站比较