Переменная 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-10.50.1746

1 ответов


потому что, когда вы declare по умолчанию varchar длина составляет 1. Так что @MyVarchar заканчивается 'A'.

это разные cast(something as varchar), где длина по умолчанию равна 30.

правильно

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

здесь 10 - длина столбца в таблице.