0

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

我的产品表有 3 列(产品 ID、产品名称、价格);

我要搜索 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() 中传递特殊字符?

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

请帮助解决这个问题。

提前致谢

4

2 回答 2

2

要正确使用全文搜索并且只返回40" LCD,试试这个:

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

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

标点符号被忽略。因此,CONTAINS(testing, "computer failure") 匹配具有值“我的计算机在哪里?找不到它会很昂贵”的行。有关分词器行为的更多信息,请参阅配置和管理用于搜索的分词器和词干分析器。

如果这不是 FTS,请尝试以下操作:

SELECT TOP 10 * FROM Product
WHERE Product_name LIKE '%40%LCD%'
于 2013-06-14T10:20:41.787 回答
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
于 2013-06-14T10:26:57.557 回答