-1

使用 SQL Server,假设您将十进制存储为 nvarchar,并且您想使用“like”将其与另一个 nvarchar 进行比较。假设您提供有效数字,这应该没问题(尽管不理想):

declare @test1 nvarchar(18);
declare @test2 nvarchar(18);

set @test1 = '1.15%';
set @test2 = '1.1500000000000000';

select 
    case when @test1 like @test2 then 'Yes' 
    else 'No' 
    end as result;

这返回“否”的结果,为什么会这样?

编辑:作为对答案的回应,曾经有过这样的日子吗?哈,谢谢你的帮助。

4

2 回答 2

3

的右侧操作数LIKE不是字符串文字,而是可以包含%_作为通配符的模式。在您的情况下,右侧操作数是@test2,它不包含此类通配符,因此仅匹配与其相同的字符串。

如果您颠倒顺序,即 do @test2 LIKE @test1,您将看到预期的结果。

于 2013-09-12T15:20:51.097 回答
3

因为@test1并且@test2LIKE声明中是错误的方式......

select 
    case when @test2 like @test1 then 'Yes' 
    else 'No' 
    end as result;
于 2013-09-12T15:21:21.580 回答