2010-04-21 2 views

답변

2

몰라가 ... 구문은 괜찮 나

declare @name varchar(45) 

set @name = 'johnson' 

IF(@name LIKE '%John%') 
BEGIN 
    print 'like' 
END 
ELSE 
BEGIN 
    print 'dislike' 
END 
+0

아하! 내 문제는 내가 당신처럼 평범한 varchar, varchar 아니라 변수를 선언했다. 감사! – user322652

+0

내 계정에서 허용하면 답변으로 표시하겠습니다. (나는 여기에서 아주 새로운 것이다) – user322652

+1

@ user322652 - 네, 항상 크기를 줄 때주의해야합니다. 이 시나리오에서 기본값은 1입니다. 다른 시나리오에서는 정의되지 않은 경우 길이가 30이됩니다! (나는 관심이 있다면 최근에 여기에 대해 썼다 : http://www.adathedev.co.uk/2010/04/sql-cast-to-varchar-without-size.html) – AdaTheDev

1

작동합니다. 작동하지 않는 경우 데이터베이스의 데이터 정렬이 될 수 있습니다.

대소 문자를 구분하는 데이터 정렬이있는 경우 대/소문자가 일치하지 않으면 일치하지 않습니다. 예 : @name이 'John Something said'인 경우, "John"을 검색하는 LIKE는 일치하는 항목을 찾지 않으므로 ELSE로 이동합니다.

+0

그 정보 주셔서 감사합니다. 나는 명성을 얻으면 당신의 답변을 투표 할 것입니다 ... – user322652

+0

그래, MS SQL 서버 야. (필자가 수반하는 모든 이상 함을 가지고) 나는 작동 버전을 비 작동 버전과 비교하고 세미콜론 라인 엔딩의 차이점을 변수 선언 및 세트에서 찾았고 내 varchar의 길이를 정의하지 않았다. – user322652