SQL Server LEFT二进制等于错误的值

时间:2017-07-10 21:31:23

标签: sql sql-server casting binary hex

我正在尝试通过以下LEFT相等检查了解发生了什么。

select
CASE
    when LEFT(0x000012CA,4) = cast(4842 as varbinary(4))  then 1
    ELSE 0
END

结果:1​​

预期:0

这应该是0,但会返回1。如果我将0x000012CA更改为任何其他值(但0x000012EA为4842),则结果会正确解析为0

看来我可以做到

cast(LEFT(0x000012CA,4) as varbinary(4))

它正确解析,但这并不能解释为什么说4841为4841工作或0x000012CA0x000012BA

1 个答案:

答案 0 :(得分:0)

尝试使用过大的数字来查看它是否有效。

select
CASE
    when LEFT(0x000012CA,4) = cast(4842 as varbinary(400))  then 1
    ELSE 0
END