例如,我有一个只有一列的表:
Col1 NVARCHAR(50)它只有一行,Col1的值是:b
我想要创建一个select语句,该语句使用该值来创建一个MD5哈希,但是该值需要附加到两个固定字符串的格式中:
'a' + Col1 + 'c'因此,实际上,我正在尝试为'abc'创建一个'abc',这应该会导致:
900150983CD24FB0D6963F7D28E17F72
要创建MD5哈希,我将使用HashBytes函数。但是,当我用列值连接固定字符串时,它不会产生预期的输出。例如:
CONVERT(VARCHAR(32), HashBytes('MD5', 'a' + Col1 + 'c'), 2)在以下方面的成果:
CE1473CF80C6B3FDA8E3DFC006ADC315
这是错误的。但是,以下所有内容都会产生正确的输出:
CONVERT(VARCHAR(32), HashBytes('MD5', 'abc'), 2)
CONVERT(VARCHAR(32), HashBytes('MD5', 'a' + 'b' + 'c')显然,这与使用字段值有关,但我不知道它是什么(可能是某种编码,或者是nvarchar?)。
如何确保生成正确的MD5值?
发布于 2015-02-25 17:11:48
列是NVARCHAR,但其他值都是VARCHAR。
您可以强制您的列到VARCHAR
CONVERT(VARCHAR(32), HashBytes('MD5', 'a' + CAST(Col1 AS VARCHAR(50)) + 'c'), 2)https://stackoverflow.com/questions/28725233
复制相似问题