首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >包含不返回任何结果

包含不返回任何结果
EN

Stack Overflow用户
提问于 2015-04-06 22:48:38
回答 3查看 53关注 0票数 0

我知道可以用LIKE代替CONTAINS,但是CONTAINS相对于LIKE来说要快得多。在这里,下面的查询不返回任何结果。为什么?

查询:

代码语言:javascript
运行
复制
SELECT CustomerName FROM members WHERE CONTAINS(Country, 'Mexico'); 

数据库:

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-06 23:01:08

MySQL解决方案

代码语言:javascript
运行
复制
select customername 
from members 
where match(country) against ('Mexico')

MS Server解决方案

全文索引不一定总是在创建后填充。使用以下代码确保索引更新:

代码语言:javascript
运行
复制
ALTER FULLTEXT INDEX ON members SET CHANGE_TRACKING AUTO;

更多信息:https://msdn.microsoft.com/en-us/library/ms142575.aspx

完整示例(包括索引创建的更改跟踪选项,而不是后面的ALTER语句):

代码语言:javascript
运行
复制
use StackOverflow
go

create table myTable 
(
    id bigint not null identity(1,1) 
        constraint myTable_pk primary key clustered
    , name nvarchar(100)
);

create fulltext catalog StackOverflow_Catalog;

create fulltext index 
    on myTable(name) 
    key index myTable_pk 
    on StackOverflow_Catalog 
    with change_tracking auto;

insert myTable 
    select 'Mexico' 
    union select 'London';

select * 
    from myTable 
    where contains(name,'Mexico');
票数 0
EN

Stack Overflow用户

发布于 2015-04-06 22:51:29

您试过在中使用吗?如果它在您的情况下有效,它可能会更快。

代码语言:javascript
运行
复制
SELECT CustomerName 
FROM members
WHERE Country IN ('Mexico')

但在您的例子中,您可能会将%放在case中,实际上比contain更快,所以只需使用下面的

代码语言:javascript
运行
复制
 SELECT CustomerName 
    FROM members
    WHERE CONTAINS(Country, '"*Mexico"'); 
票数 0
EN

Stack Overflow用户

发布于 2015-04-06 22:52:07

尝尝这个

如果列国家上有全文搜索索引.

代码语言:javascript
运行
复制
SELECT CustomerName FROM members 
WHERE CONTAINS(Country, 'Mexico'); 

否则就这么做

代码语言:javascript
运行
复制
SELECT CustomerName FROM members 
WHERE Country LIKE N'%Mexico%'; 

有一个unicode字符é,您需要在字符串前面加上N

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

https://stackoverflow.com/questions/29480937

复制
相关文章

相似问题

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