Переменная 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
- длина столбца в таблице.