在sql server中的Contains()中传递特殊字符

时间:2013-06-14 10:18:53

标签: sql-server

我使用contains()搜索字符串。

我的产品表有3列(Product_id,Product_name,Price);

我想搜索40“LCD

我的桌子包含40“LCD,40'LCD,40cm LCD等 我正在使用以下查询搜索40“LCD产品。

Select top 10 *
from Product
where contains(Product_name,'(FORMSOF (INFLECTIONAL, 40) AND FORMSOF (INFLECTIONAL, LCD))')

以上查询显示零结果。但我希望得到像40“LCD

的结果

如何在Contains()中传递特殊字符?

我在谷歌搜索但没找到任何好的解决方案

请帮助解决这个问题。

先谢谢

2 个答案:

答案 0 :(得分:2)

要正确使用全文搜索并仅返回40" LCD,请尝试以下操作:

SELECT TOP 10 * FROM Product
WHERE CONTAINS(Product_name, '40 AND LCD')
AND Product_name LIKE '%40"%'

注意:根据MSDN,标点符号会被忽略,因此上述查询将包含40"40'

  

忽略标点符号。因此,CONTAINS(测试,“计算机   失败“)匹配一行的值,”我的电脑在哪里?失败   发现这将是昂贵的。“有关断字器的更多信息   行为,请参阅Configure and Manage Word Breakers and Stemmers for Search.

如果这不是FTS,请尝试:

SELECT TOP 10 * FROM Product
WHERE Product_name LIKE '%40%LCD%'

答案 1 :(得分:0)

它将搜索包含双引号或单引号的任何行。假设您有表格式:

create table a(
f1 varchar(100))

insert into a values('40" Inch TV')

select * from a 
where CHARINDEX('"',f1,1)>0

select * from a 
where CHARINDEX('40"',f1,1)>0

而且,这是针对单个引用数据

insert into a values('17'' inch monitor')

select * from a 
where CHARINDEX('17''',f1,1)>0