我的存储过程是这样写的,前面一直没出问题,今天刚输入“西  瓜”就出错了,提示为:
在 '西' 附近发生语法错误。在搜索条件 '西 瓜' 中应为 '''''。
请高人指点一下。
set @sqlStr=N'select * from fruit where Contains(title,'''+@title+''')'
EXEC sp_executesql @sqlStr

解决方案 »

  1.   

    参考
    A. 使用带有 <simple_term> 的 CONTAINS
    下面的示例查找包含词"bottles"且价格为 $15.00 的所有产品。USE Northwind
    GO
    SELECT ProductName
    FROM Products
    WHERE UnitPrice = 15.00
       AND CONTAINS(QuantityPerUnit, 'bottles')
    GOB. 在 <simple_term> 中使用 CONTAINS 和短语
    下面的示例返回包含短语 "sasquatch ale" 或 "steeleye stout" 的所有产品。USE Northwind
    GO
    SELECT ProductName
    FROM Products
    WHERE CONTAINS(ProductName, ' "sasquatch ale" OR "steeleye stout" ')
    GOC. 使用带有 <prefix_term> 的 CONTAINS
    下面的示例返回所有满足该条件的产品名称:这些产品名称至少含有一个以 ProductName 列中前辍 Choc 起始的词。USE Northwind
    GO
    SELECT ProductName
    FROM Products
    WHERE CONTAINS(ProductName, ' "choc*" ')
    GOD. 使用带有 <prefix_term> 的 CONTAINS 和 OR
    下面的示例返回包含字符串 "sea" 或 "bread" 的所有分类描述。USE Northwind
    SELECT CategoryName
    FROM Categories
    WHERE CONTAINS(Description, '"sea*" OR "bread*"')
    GOE. 使用带有 <proximity_term> 的 CONTAINS
    下面的示例返回在词 "spread" 附近有词 "Boysenberry" 的所有产品名称。USE Northwind
    GO
    SELECT ProductName
    FROM Products
    WHERE CONTAINS(ProductName, 'spread NEAR Boysenberry')
    GOF. 使用带有 <generation_term> 的 CONTAINS
    下面的示例搜索具有 dry 形式的词的所有产品:dried 和 drying 等等。USE Northwind
    GO
    SELECT ProductName
    FROM Products
    WHERE CONTAINS(ProductName, ' FORMSOF (INFLECTIONAL, dry) ')
    GOG. 使用带有 <weighted_term> 的 CONTAINS
    下面的示例搜索包含词 spread、sauces 或 relishes 以及给予每个词不同加权的所有产品名称。USE Northwind
    GO
    SELECT CategoryName, Description
    FROM Categories
    WHERE CONTAINS(Description, 'ISABOUT (spread weight (.8), 
       sauces weight (.4), relishes weight (.2) )' )
    GOH. 使用带变量的 CONTAINS
    下例使用变量而非特定的搜索术语。USE pubs
    GO
    DECLARE @SearchWord varchar(30)
    SET @SearchWord ='Moon'
    SELECT pr_info FROM pub_info WHERE CONTAINS(pr_info, @SearchWord)
      

  2.   

    致:
        98star(~瞬间的流星也是美的!) 
        可否解释一下,下面这条语句出错的原因。
        select * from fruit where Contains(title,'西   瓜')
      

  3.   

    这样是错误的
    select * from fruit where Contains(title,'西   瓜')
    如果这样就是正确的,为什么?
    select * from fruit where Contains(title,'"西   瓜"')
      

  4.   

    西瓜,大西瓜。
    我查到了,CONTAINS中的搜索条件是一个短语时,即单字节语言中由空格和可选的标点符号分隔的一个或多个连续的词,这时要用双引号期其括起来,否则会引起上述错误。
    大西瓜,自己找出答案虽然比较有趣,可是比较费时啊。