2011-12-20 10 views
8

この作品...VARCHAR変数は、WHEREで動作していない句

DECLARE @MyInt int = 12345; 
SELECT * FROM MyTable WHERE MyId = @MyInt; --Returns 1 row 
SELECT * FROM MyTable WHERE MyId = 12345; --Returns 1 row 

はこれがないのはなぜ?

DECLARE @MyVarchar varchar = 'ABCDEF'; 
SELECT * FROM MyTable WHERE MyId = @MyVarchar; --Returns 0 rows 
SELECT * FROM MyTable WHERE MyId = 'ABCDEF'; --Returns 1 row 

SQL Serverバージョンときdeclare、デフォルトvarchar長さは1あるので10.50.1746

答えて

14

です。したがって、@MyVarchar'A'となります。

これがデフォルトの長さは30あるcast(something as varchar)に異なっています。

正しいことは10は、テーブル内の列の長さである

DECLARE @MyVarchar varchar(10) = 'ABCDEF'; 

です。

+0

ああ、私の愚かなこと。または、Microsoftの愚かなことかもしれません –

関連する問題