首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询-匹配字符串的任何部分

SQL查询-匹配字符串的任何部分
EN

Stack Overflow用户
提问于 2014-11-11 21:40:22
回答 4查看 23.6K关注 0票数 3

我有一个表,它包含一个名为- DOC_NAME的VARCHAR列。我想查询这个列中的任何字符串匹配,部分匹配也被接受。

例如,该列包含:

“病毒和间谍软件如何附着在系统上- Techicode”

如果我搜索“病毒间谍软件”,我不会得到任何结果。我不想单独搜索每个单词,因为这可能会返回不相关的结果。此外,我想搜索‘关键字’,而不需要整个字符串。

我尝试了以下几种选择:

select * from docs where DOC_NAME like '%virus spyware%';

我也试过:

代码语言:javascript
复制
SELECT * FROM docs WHERE DOC_NAME LIKE CONCAT('%','virus spyware','%')

但正如我所提到的,我没有任何结果。

我有一个查询,我可以用它返回一个值?

提前谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-11-11 21:46:04

代码语言:javascript
复制
select * from docs where DOC_NAME like '%virus%spyware%'

或者,如果订单不重要,而且只需要匹配一个:

代码语言:javascript
复制
select * from docs where DOC_NAME like '%virus%' or DOC_NAME like '%spyware%'

如果所有关键字必须匹配,则使用AND而不是OR

票数 11
EN

Stack Overflow用户

发布于 2014-11-11 21:49:29

在MySQL中有多个实现全文搜索的选项。本机方法是添加一个全文索引,然后可以使用它来运行搜索,如您的示例所示:

代码语言:javascript
复制
alter table docs
  add fulltext index doc_name_fti (doc_name);

select * 
from docs
where match(doc_name) against ('+virus +spyware' in boolean mode);

还有一些产品,如狮身人面像索尔,您可以使用。

票数 4
EN

Stack Overflow用户

发布于 2014-11-11 21:50:13

SELECT doc_name FROM docs WHERE doc_name RLIKE '.*virus*spyware'

我发现类似的语法不像PCRE那么熟悉。

然而,这可能更有表现力。

SELECT FIELD('virus', doc_name) or FIELD('spyware', doc_name) from docs

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26875108

复制
相关文章

相似问题

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