2017-10-03 14 views
0

사용자가 임의의 값을 입력 할 수있는 검색이 있습니다. 때로는 합법적 인 숫자입니다.Sql Server 2008 숫자 값을 검색하는 "포함"검색은 같은 길이의 다른 번호를 가진 모든 레코드를 반환합니까?

Select * FROM Updates WHERE contains(Remarks, '"10010234331"') 

를 검색 할 때 는 같은 길이의 숫자를 가지고 관련이없는 결과를 반환합니다 즉, 위의 하나 개의 일치

"PO input differently on orders, refs are: 

1001024894 
10010248940" 

당신이 볼 수 있듯이, 검색 문자열되지이다 이 중 하나의. 어떤 생각이라도 그것을 추측하지 말라고 말하는 방법?

+0

당신이'사용할 수 없습니다 like'? – dbajtr

+0

전체 텍스트 인덱싱을 사용하는 텍스트 필드를 검색 할 때 검색 할 레코드의 양은 like를 사용하면 속도가 느려지는 것을 의미합니다. – Stormtreader

답변

0

오른쪽.

전체 텍스트 인덱스 "단어 분리기의 언어"가 "영어"이외의 값으로 설정된 경우 전체 텍스트 인덱스는 첫 번째 5 개의 숫자 만 인덱싱합니다. 숫자 문자열. 이것은 위 둘 모두 "10010"을 시작하기 때문에 일치 항목으로 반환됨을 의미합니다.

"프랑스어,"독일어 ","히브리어 ", 심지어"중립 "는 잘못된 결과를 반환하고, 단지"영어 "단지 전체 문자열과 일치 돌려줍니다.

create table wtFTI(taskid int not null , remarks text, constraint [PK__wtFTI] primary key(taskid)) 
insert into wtfti 
values(3513792, 'Remarks: 1001019658 was cancelled 26/08') 
GO 

CREATE FULLTEXT CATALOG [TaskRemarks]WITH ACCENT_SENSITIVITY = OFF 

GO 

CREATE FULLTEXT INDEX ON [dbo].[wtFTI] KEY INDEX [PK__wtFTI] ON ([TaskRemarks]) WITH (CHANGE_TRACKING = AUTO, STOPLIST = SYSTEM) 
GO 
ALTER FULLTEXT INDEX ON [dbo].[wtFTI] ADD ([remarks]LANGUAGE 'French') 
GO 
ALTER FULLTEXT INDEX ON [dbo].[wtFTI] ENABLE 
GO 


Select * FROM [wtFTI] WHERE contains(Remarks, '"1001019000"') 

ALTER FULLTEXT INDEX ON [dbo].[wtFTI] DROP ([remarks]) 
GO 
ALTER FULLTEXT INDEX ON [dbo].[wtFTI] ADD ([remarks] LANGUAGE 'English') 
GO 


Select * FROM [wtFTI] WHERE contains(Remarks, '"1001019000"')