2012-01-11 4 views
0

안녕하세요. CONTAINS 함수와 비슷한 기능을 찾고 있는데, 필드를 전체 텍스트 색인으로 만들 필요가 없습니다. 기본적으로 저는 ABC DEF GHI과 같은 공백으로 구분 된 코드를 포함하는 필드가 있습니다. 쿼리를 실행하고 DEF이 필드에 있는지 확인하려고합니다. 이 일을 어떻게 하죠?비슷한 기능이 포함되어 있습니다.

+0

LIKE '% DEF %'는 작동하지만, slooooooooooooooooooowwwwwwww 일 수 있습니다. "공간으로 구분 된 일부 코드가 포함 된 필드"는 피해야합니다. – aehiilrs

+0

@aehiilrs 불행히도 데이터베이스가 설정되어 있고 변경할 수 없기 때문에 내가해야 할 일이 있습니다! :( –

답변

2

CHARINDEX을보세요. 검색 문자열이 처음 또는 마지막 목록에있는 경우를 설명하기 위해 검색되는 열의 처음과 끝 부분에 공백을 추가했습니다.

SELECT * 
    FROM YourTable 
    WHERE CHARINDEX(' DEF ', ' ' + YourColumn + ' ') <> 0; 
6

LIKE 연산자가 필요한 것 같습니다. 없이 단지와 그 값을 인 명령문의 최종 가장자리 케이스 -

SELECT * FROM someTable WHERE someField LIKE '%DEF%' 
+0

열은 공백으로 구분 된 값 모음입니다. 예를 들어 열에 'ABC 12DEF34 GHI'가 포함되어 있으면 잘못된 검색 결과가 표시됩니다. 검색에서 공백 구분 기호를 고려하지 않았습니다. –

2
WHERE YourField like '% DEF %' 
OR YourField LIKE '% DEF' 
OR yourField like 'DEF %' 
OR YourField = 'DEF' 

가 공백으로 둘러싸인 중앙에있는 경우를 커버, 또는 끝에서/시작 : 쿼리는 다음과 같이 보일 것이다 공백 'ADEFB'값이있는 경우 의도적으로 사용 된 공간/확보 된 공간입니다 (예 : 다른 코드 안에 하나의 코드.

실적이 좋지는 않을 것입니다.

관련 문제