[sql-server] 저장 프로 시저를 사용하여 SQL Server 2005에서 문자열에 하위 문자열이 포함되어 있는지 확인

나는 문자열을 가지고있다 @mainString = 'CATCH ME IF YOU CAN'. 단어 ME가 안에 있는지 확인하고 싶습니다 @mainString.

SQL에서 문자열에 특정 하위 문자열이 있는지 어떻게 확인합니까?



답변

CHARINDEX ()는 더 큰 문자열에서 하위 문자열을 검색하고 일치하는 위치를 반환하거나 일치하는 항목이 없으면 0을 반환합니다.

if CHARINDEX('ME',@mainString) > 0
begin
    --do something
end

다니엘스의 답변을 편집 하거나 단어의 하위 구성 요소가 아닌 단어를 찾으려면 CHARINDEX 호출은 다음과 같습니다.

CHARINDEX(' ME ',' ' + REPLACE(REPLACE(@mainString,',',' '),'.',' ') + ' ')

발생할 수있는 다른 구두점에 대해 재귀 REPLACE () 호출을 더 추가하십시오.


답변

술어에서 와일드 카드를 사용할 수 있습니다 (IF, WHERE 또는 ON 이후).

@mainstring LIKE '%' + @substring + '%'

이 특정한 경우에

' ' + @mainstring + ' ' LIKE '% ME[., ]%'

(전체 단어를 찾으려면 인용 된 문자열에 공백을 넣거나 ME가 더 큰 단어의 일부가 될 수 있으면 공백을 남겨 두십시오).


답변