我有两组十六进制值:
---------- ------------------
0x0062EB3F 0x000000020062EB3F
0x0062EF17 0x000000020062EF17
0x0062EF30 0x000000020062EF30
0x0062EF38 0x000000020062EF38
0x0062EF3B 0x000000020062EF3B
0x0062EF3F 0x000000020062EF3F
0x0062EF40 0x000000020062EF40
唯一的区别是前导零,这些是与旁边的零相同的数字。那么为什么MSSQL不认为它们是平等的呢?我错过了什么吗?
答案 0 :(得分:8)
实际上,它们的区别不仅仅是前导零:
0x 0062EB3F
0x000000020062EB3F
*
*
那里有一个额外的“2”.....所以他们不相同!
答案 1 :(得分:5)
首先,您在问题中列出的数字并不相同:
0x0062EB3F != 0x000000020062EB3F
^
注意,右边的数字有额外的2
此外,它还取决于SQL Server用于存储数字的数据类型。如果它们存储为INT或BIGINT,则0x0001等效于0x1,但如果它们存储为例如VARBINARY - 那么0x0001与0x1不同。