문제

Like를 사용하여 저장된 절차로 품목을 필터링하려고합니다. 열은 바르 차르 (15)입니다. 필터링하려는 항목에는 이름에 정사각형 괄호가 있습니다.

예를 들어: WC[R]S123456.

내가한다면 LIKE 'WC[R]S123456' 아무것도 돌려주지 않을 것입니다.

사용에 대한 정보를 찾았습니다 ESCAPE 키워드 LIKE 그러나 정사각형 브래킷을 일반 문자열로 취급하는 데 사용하는 방법을 이해하지 못합니다.

도움이 되었습니까?

해결책

LIKE 'WC[[]R]S123456' 

또는

LIKE 'WC\[R]S123456' ESCAPE '\'

작동해야합니다.

다른 팁

문자를 맞추고 싶다고 가정 해 봅시다 its[brac]et.

당신은 탈출 할 필요가 없습니다 ] 쌍을 이룰 때만 특별한 의미가 있으므로 [.

따라서 탈출 [ 문제를 해결하기에 충분합니다. 당신은 탈출 할 수 있습니다 [ 교체함으로써 [[].

쿼리에서 밑줄로 시작한 이름을 제외해야했기 때문에 다음과 같습니다.

WHERE b.[name] not like '\_%' escape '\'  -- use \ as the escape character

내가 실제로 사용한 것은 다음과 같습니다.

like 'WC![R]S123456' ESCAPE '!'

Escape 키워드는 일반적으로 와일드 카드 인 % 및 _와 같은 특수 문자를 검색 해야하는 경우 사용됩니다. Escape를 지정하면 SQL은 문자 그대로 문자 % 및 _을 검색합니다.

다음은 더 많은 예가있는 좋은 기사입니다

SELECT columns FROM table WHERE 
    column LIKE '%[[]SQL Server Driver]%' 

-- or 

SELECT columns FROM table WHERE 
    column LIKE '%\[SQL Server Driver]%' ESCAPE '\'

특수 캐릭터를 피해야한다면 '_' (밑줄), 내 경우와 마찬가지로, 당신은 탈출 조항을 기꺼이/정의 할 수 없으며, 정사각형 괄호로 특수 문자를 둘러싸고 싶을 수도 있습니다. '[' 그리고 ']'.

이것은 "이상한"문자열의 의미를 설명합니다. '[[]' - 그것은 단지 그것을 포용합니다 '[' 사각형 괄호가있는 캐릭터, 효과적으로 탈출합니다.

제 사용 사례는 프로파일 러의 필터 기준으로 밑줄이있는 저장 프로 시저의 이름을 지정하는 것이 었습니다. 그래서 나는 문자열을 넣었다 '%이름 [_] [_] a [_] 저장된 [_] 절차%' 필드와 같은 TextData에서는 내가 달성하고 싶었던 추적 결과를 주었다.

다음은 문서의 좋은 예입니다.Like (Transact -SQL) - 와일드 카드 문자 사용 리터럴로 사용

에 따르면 선적 서류 비치:

와일드 카드 패턴 일치 문자를 문자 그대로 문자로 사용할 수 있습니다. 와일드 카드 문자를 문자 그대로 사용하려면 와일드 카드 문자를 괄호 안에 둘러싸십시오.

이 세 캐릭터를 피해야합니다 %_[:

'5%'      LIKE '5[%]'      -- true
'5$'      LIKE '5[%]'      -- false
'foo_bar' LIKE 'foo[_]bar' -- true
'foo$bar' LIKE 'foo[_]bar' -- false
'foo[bar' LIKE 'foo[[]bar' -- true
'foo]bar' LIKE 'foo]bar'   -- true

키보드의 ''또는 다른 문자 대신 키보드에없는 특수 문자를 사용할 수도 있습니다. 사용 사례에 따라 사용자 입력이 실수로 탈출 문자로 사용되도록 원하지 않는 경우 필요할 수 있습니다.

다음을 사용하십시오.

사용자 입력이 그대로 검색하려면 Escape를 사용하십시오. 모든 특수 문자를 대체해야합니다 (아래의 모든 SQL Server는 아래).

여기서 단일 인용문 " '"은 문자열 연결 문제이므로 절과 같은 영향을 미치지 않기 때문에 취해지지 않습니다.

"-"& "^"& "]탈출 할 때 대체가 필요하지 않습니다 [".

String FormattedString = "UserString".Replace("ð","ðð").Replace("_", "ð_").Replace("%", "ð%").Replace("[", "ð[");

그런 다음 SQL 쿼리에서는 다음과 같습니다. (매개 변수화 된 쿼리에서 위의 교체 후 패턴으로 문자열을 추가 할 수 있습니다).

정확한 문자열을 검색합니다.

like 'FormattedString' ESCAPE 'ð'

문자열로 시작합니다

like '%FormattedString' ESCAPE 'ð'

문자열로 끝을 검색합니다

like 'FormattedString%' ESCAPE 'ð'

문자열이 포함되어 있습니다

like '%FormattedString%' ESCAPE 'ð'

다른 패턴 매칭을 위해. 그러나 직접 사용자 입력은 위에서 언급했듯이 포맷해야합니다.

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