복붙노트

[SQL] VARCHAR 변수는 WHERE 절에서 작동하지 않습니다

SQL

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. ==============================

    1.당신이 선언 할 때 때문에, 기본 VARCHAR 길이는 1 그래서 @MyVarchar이 'A'를 것으로 끝입니다.

    당신이 선언 할 때 때문에, 기본 VARCHAR 길이는 1 그래서 @MyVarchar이 'A'를 것으로 끝입니다.

    이것은 기본 길이는 30입니다 캐스트 (VARCHAR와 같은 무언가)에 다릅니다.

    옳은 일이다

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

    여기서 10은 테이블 컬럼의 길이이다.

  2. from https://stackoverflow.com/questions/8580076/varchar-variable-is-not-working-in-where-clause by cc-by-sa and MIT license