我想知道是否有人可以解释这种行为?
DECLARE @RandomParam1 NVARCHAR
DECLARE @RandomParam2 NVARCHAR
DECLARE @RandomParam3 NVARCHAR
SET @RandomParam1 = '0HelloWorld'
SET @RandomParam2 = '9HelloWorld'
SET @RandomParam3 = '15HelloWorld'
select 1 where '0' = @RandomParam1 -- true
select 1 where '0' = '0HelloWorld' -- false
select 1 where '9' = @RandomParam2 -- true
select 1 where '15' = @RandomParam3 -- false
为什么带参数的字符串比较产生的结果与不带参数的结果不同?为什么它声称'0' = '0whatever'?
我知道可能是参数试图将其作为数字进行比较,但是最后一个示例也应该是正确的。
有任何想法吗?