我想听听你们是否有任何想法要做以下事情: 我有一个表包含一些cardefinitions [id] [Company] [Mode],这可能是例如是奥迪100,福特穆斯坦等。然后我有另一个字段,其中包含汽车和模型,这可能是“福特野马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不是唯一的,我得到这个错误:“不能在表或索引视图'dbo.CarModelDefinition'上使用CONTAINS或FREETEXT谓词,因为它不是全文索引的。” 有没有人知道如何解决这个问题?
答案 0 :(得分:1)
@CarDefintion = "Ford Mustang 2.5T"
Select top 1 CarDefinitionId
from dbo.CarModelDefinition
where @Cardefinition LIKE Model OR @Cardefinition LIKE Company
答案 1 :(得分:1)
使用LIKE
搜索带有通配符列值的字符串。
@CarDefintion = "Ford Mustang 2.5T"
Select top 1 CarDefinitionId
from dbo.CarModelDefinition
where @Cardefinition like '%' + model + '%'
AND @Cardefinition like '%' + company + '%';
+
是字符串catenation运算符。
答案 2 :(得分:0)
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()函数用于全文搜索,您很可能没有使用(因此错误)
答案 3 :(得分:0)
必须@CarDefintion是一个字符串吗?是否有可能使它成为一个模型和公司的数组,然后您可以在SQL中引用它?
如果不这样,你会绝对肯定有人不只是把“Mustang 2.5T”代替“Ford Mustang 2.5T”吗?如果您可以绝对确定,那么一种方法是按空格分割,然后对每个段进行一系列查找以尝试找到它。