我有一个有效的查询。查询中的一个字段是:
HASHBYTES('MD5', table1.field1 + table1.field2 + table1.field3) as OUT_NAME
这给了一个看起来很奇怪的字符串。我希望这是一个32位的十六进制字符串,所以我试着围绕hashbyte计算(来自sqlserver新闻组中的建议)
CONVERT(VARCHAR(32), THE-HASHBYTE-STUFF, 2) AS OUT_NAME.
我也尝试过(这在查询的其他地方工作)
SUBSTRING(master.dbo.fn_varbintohexstr(THE-HASHBYTE-STUFF), 3, 32) AS OUT_NAME
这两个都将varchar转换为int时出错。
我还尝试将HASHBYTES中的每个片段转换为varchar或nvarchar,并且仍然会在片段中出现错误 - 即使没有任何转换的片段 - 简单的HASHBYTES - 也能正常工作。我也试过CAST,但仍然有这些错误。
为什么
CONVERT(VARCHAR(32), something-that-works, 2)
失败 - 转换为int?