0

私はmssql2008でこれを試していました:

declare @test nvarchar

set @test = '12345'

select 'true' where @test like '%3%' -- no results, condition fails

select 'true' where '12345' like '%3%' -- returns true, condition passes

最初の select ステートメントが結果を返さない理由を誰かに説明してもらえますか?

4

2 に答える 2

6

変化する

declare @test nvarchar

declare @test nvarchar(10)

SQL フィドルのデモ

nchar と nvarchar (Transact-SQL)から、あなたの質問に答えるために

n がデータ定義ステートメントまたは変数宣言ステートメントで指定されていない場合、デフォルトの長さは 1 です。CAST 関数で n が指定されていない場合、デフォルトの長さは 30 です。

于 2013-10-02T12:16:19.047 に答える
0

これは、@test nvarchar がサイズ 1 で初期化されているために発生します。つまり、set ステートメントからの '1' のみが含まれています。

宣言ステートメントを @test nvarchar(5) に変更すると、機能します。

于 2013-10-02T12:21:08.287 に答える