-1

SQL Server を使用して、10 進数を 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

to の右側のオペランドは、文字列リテラルではなく、ワイルドカードとしてandをLIKE含むことができるパターンです。あなたの場合、右側のオペランドは、そのようなワイルドカードを含まないため、それと同一の文字列にのみ一致します。%_@test2

順序を逆にすると、つまり do @test2 LIKE @test1、意図した結果が表示されます。

于 2013-09-12T15:20:51.097 に答える
3

@test1@test2はステートメントで間違っているためLIKE...

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