【发布时间】:2015-03-01 13:37:02
【问题描述】:
请参阅下面的 DDL:
CREATE TABLE #Person (id decimal(25,0))
INSERT INTO #Person values (153121432060080000944513)
以及下面的SQL语句:
select substring(HASHBYTES('MD5',
CAST(id AS varchar(24))),1,4)
from #person
在阅读 Hashbytes 参考 (https://msdn.microsoft.com/en-GB/library/ms174415.aspx) 后,我了解到返回了 VARBINARY。 substring 函数如何与 VARBINARY 一起工作。上面的 SUBSTRING 函数返回以下内容:
0x05DDF8D9
这超过四个字符的长度。我知道 0x 表示 VARBINARY。为什么子串的字符多于四个?
【问题讨论】:
-
该值被编码为十六进制,因此输出中的每个字符代表四位——通常是存储中字符的一半。
0x表示字符串中的每个字符的两个字符。所以,这是四个字符。