我使用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()中传递特殊字符?
我在谷歌搜索但没找到任何好的解决方案
请帮助解决这个问题。
先谢谢
答案 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