문제

[["는 유니 코드 문자로 분류되지 않습니다 http://en.wikipedia.org/wiki/list_of_unicode_characters (내 추측) 이것이 왜 작동하지 않는지에 대한 :

declare @v nvarchar(255)
set @v =  '[x]825' 
select 1 
where  @v like  '[x]825' 
도움이 되었습니까?

해결책

[] 패턴 일치에 대한 다양한 문자를 정의합니다. 같은 진술에서 특별한 의미가 있습니다. 여기에 대한 문서가 있습니다.

그 캐릭터를 명시 적으로 찾고 있다면 다음과 같이 탈출해야합니다.

declare @v nvarchar(255)
set @v =  '[x]825' 
select 1 
where  @v LIKE '![x]825' 
       ESCAPE '!'

다른 팁

x]는 SQL Server에 구체적인 의미가 있습니다. 브래킷은 매우 기본적인 정규 표현식에 사용됩니다. 따라서 당신이 검색하는 것은 첫 번째 문자가 문자 X를 포함하는 곳이며 물론 변수의 첫 번째 문자가 아닙니다.

당신이 havea awildcard를하려고하지 않는 한, 쿼리가 인덱스 대신 테이블 스캔을 사용하기 때문에 와일드 카드를 첫 번째 문자로 만드는 것은 나쁜 관행입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top