Pergunta

Gostaria de saber se algum de vocês tem uma idéia para fazer o seguinte: I têm uma tabela contendo algumas cardefinitions [id] [Companhia] [Modo], este pode, por exemplo ser Audi 100, Ford Mustan etc. Em seguida, tenho um outro campo que é uma string contendo tanto o carro eo modelo, este poderia ser "Ford Mustang 2.5T", então eu preciso encontrar a identificação correta do cardefinition. I embora, fazendo

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

Mas desde Modelo + Company não é único eu recebo este erro: "Não é possível usar um predicado CONTAINS ou FREETEXT na tabela ou exibição indexada 'dbo.CarModelDefinition' porque não é indexado por texto total." Alguém tem uma idéia de como posso resolver isso?

Foi útil?

Solução

Pesquisar a string com os valores colunas curinga usando LIKE.

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

+ é o operador corda catenation.

Outras dicas

@CarDefintion = "Ford Mustang 2.5T"

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

Deve @CarDefintion ser uma string? Seria possível para torná-lo uma variedade de modelo e Companhia que você pode fazer referência na sua SQL?

Se isso falhar você seria absolutamente certo de que alguém não basta colocar "Mustang 2.5T" em vez de "Ford Mustang 2.5T"? Se você pode ter certeza absoluta, em seguida, uma maneira de fazer isso é dividir por espaços, em seguida, fazer uma série de pesquisas em cada segmento para tentar localizá-lo.

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

contains () funções são para pesquisa de texto completo, que você provavelmente não está usando (daí os erros)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top