首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在sql server中的Contains()中传递特殊字符

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

Stack Overflow用户
提问于 2013-06-14 18:18:53
回答 2查看 1.9K关注 0票数 0

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

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

我想搜索40英寸液晶屏

我的表格包含40“LCD,40‘LCD,40 am等,我正在使用以下查询搜索40”LCD产品。

代码语言:javascript
复制
Select top 10 *
from Product
where contains(Product_name,'(FORMSOF (INFLECTIONAL, 40) AND FORMSOF (INFLECTIONAL, LCD))')

上面的查询显示结果为零。但是我想要40英寸的液晶屏

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

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

请帮我解决这个问题。

提前感谢

EN

回答 2

Stack Overflow用户

发布于 2013-06-14 18:20:42

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

代码语言:javascript
复制
SELECT TOP 10 * FROM Product
WHERE CONTAINS(Product_name, '40 AND LCD')
AND Product_name LIKE '%40"%'

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

忽略

标点符号。因此,CONTAINS(testing,"computer failure")匹配一行的值,"Where is my computer?找不到它的代价很高。“有关断字符行为的更多信息,请参见Configure and Manage Word Breakers and Stemmers for Search.

在没有FTS的情况下,试试这个:

代码语言:javascript
复制
SELECT TOP 10 * FROM Product
WHERE Product_name LIKE '%40%LCD%'
票数 2
EN

Stack Overflow用户

发布于 2013-06-14 18:26:58

它将搜索包含双报价或单报价的任何行。

假设你有这样的Table:

代码语言:javascript
复制
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

而且,这是针对单引号数据的

代码语言:javascript
复制
insert into a values('17'' inch monitor')

select * from a 
where CHARINDEX('17''',f1,1)>0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17106249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档