문제

여러분 중 누구라도 다음을 수행 할 아이디어가 있으면 듣고 싶습니다. 일부 카디피 션 [ID] [회사] [모드]가 포함 된 테이블 하나가 있습니다. 예를 들어 Audi 100, Ford Mustan 등이있을 수 있습니다. 자동차와 모델이 모두 포함 된 문자열 인 "Ford Mustang 2.5T"일 수 있습니다. 그런 다음 카디드 피션에서 올바른 ID를 찾아야합니다. 나는하지만

@CarDefintion = "Ford Mustang 2.5T"
Select top 1 CarDefinitionId 
  from dbo.CarModelDefinition 
 where CONTAINS(Model,@Cardefinition) 
   AND Contains(Company, @Cardefinition)

그러나 Model + Company가 독특하지 않기 때문에이 오류가 발생합니다. "표에 포함되거나 freetext 술어를 사용할 수 없습니다. 테이블 또는 인덱스 뷰 'dbo.carmodelDefinition'은 전체 텍스트 색인이 없기 때문에 사용할 수 없습니다."내가 이것을 어떻게 해결할 수 있는지에 대한 아이디어가 있습니까?

도움이 되었습니까?

해결책

와일드 카드 열 값을 사용하여 문자열을 검색하십시오 LIKE.

@CarDefintion = "Ford Mustang 2.5T"
Select top 1 CarDefinitionId 
  from dbo.CarModelDefinition 
 where @Cardefinition like '%' + model + '%'
   AND @Cardefinition like '%' + company + '%';

+ 문자열 catenation 연산자입니다.

다른 팁

@CarDefintion = "Ford Mustang 2.5T"

Select top 1 CarDefinitionId 
  from dbo.CarModelDefinition 
 where @Cardefinition LIKE Model OR @Cardefinition LIKE Company 

@cardefintion이 문자열이어야합니까? SQL에서 참조 할 수있는 모델과 회사 배열로 만들 수 있습니까?

실패하면 누군가가 "Ford Mustang 2.5T"대신 "Mustang 2.5T"를 넣지 않는다고 확신 할 수 있습니까? 당신이 절대적으로 확신 할 수 있다면, 그것을하는 한 가지 방법은 공간으로 나누는 것입니다. 각 세그먼트에서 일련의 조회를하여 시도하고 찾으십시오.

DECLARE @CarDefintion VARCHAR(25)
        SET @CarDefintion = 'Ford Mustang 2.5T'

DECLARE @Make  VARCHAR(25)
DECLARE @Model VARCHAR(25)
SELECT @Make  = SUBSTRING(@CarDefintion,0,CHARINDEX(' ',REVERSE(@CarDefintion)))
SELECT @Model = LTRIM( REPLACE(@CarDefintion,@Make,'')) 

--SELECT @Make,@Model

        SELECT TOP 1 * 
          FROM dbo.CarModelDefinition 
         WHERE Model   = @Model
           AND Company = @Make

포함 () 함수는 전체 텍스트 검색 용이며, 대부분 사용하지 않을 가능성이 높습니다 (따라서 오류).

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