2014-03-06 2 views
1

많은 답변을 검색했지만 다음과 같은 간단한 작업에 대한 해결책을 찾지 못했습니다.정확한 문자열이 T-SQL에 있습니까?

길이가 긴 TextString이 있고 그 안에 'Text'문자열과 정확히 일치하는 항목을 찾고 싶습니다.

TextString LIKE '% Text %' 

은 'text'와 'Text'가 모두 나타나며 한 단어 내에서 시작 및/또는 끝납니다. 앞과 뒤의 '텍스트'(대소 문자 구분)의 발생 만 원합니다.

공간에 대해 LIKE=의 동작을 알고 있으므로이 사이트의 다른 곳에서 수행 된대로 다시 설명 할 필요가 없습니다.

답변

1

이 시도 :

테스트 데이터입니다.

declare @t table (word nvarchar(50)) 

insert into @t 
values (' text '), (' Text '), ('text '), (' text'), (' other '), (' text in large string'), ('xxxxxtext'),('xxxxxtext '), ('xxxx text') string') 

관련 검색어.

select * from @t 

where word like '%' + ' text ' + '%' 

결과 :

text 
Text 
text in large string 
+0

또한 Holf의 답변에 따라 데이터 정렬을 고려해야 할 수도 있습니다. –

+1

('xxxxxtext'), ('xxxxxtext'), (xxxx text ') 값을 확인 하시겠습니까? 세 가지 경우 모두 '% text %'에 대한 테스트를 수행하지 않아야합니다. – alrts

+0

해당 값은 반환되지 않습니다. –

8

구체적으로 Microsoft SQL Server에 대해 묻고 있습니까? 그렇다면 ...

'유사'비교의 동작은 데이터베이스 (또는 테이블)의 데이터 정렬을 설정 한 방법에 따라 다릅니다. 대소 문자를 구분하는 데이터 정렬이있는 경우 '좋아요'는 대소 문자를 구분하여 동작합니다.

그러나 경우에 따라이 동작을 재정의 할 수 있습니다 :

SELECT MyField FROM MyTable 
WHERE MyField COLLATE Latin1_General_CS_AS LIKE '% Text %'; 
+0

감사합니다! 예, 저는 MS SQL을 언급하고있었습니다. 이제 선행 공백과 후행 공백 내가 평가할 때 SQL이 무시한다는 것을 어떻게 피하겠습니까? – alrts

+0

이 작품, 고마워요! 검색 시간은 상당히 길다. – alrts

+0

오래 걸릴 것으로 예상됩니다. 성능이 문제가되면 SQL Server 전체 텍스트 검색이 좋은 옵션이 될 것입니다. – Holf

관련 문제