我知道可以使用LIKE
代替CONTAINS
,但与CONTAINS
相比,LIKE
相对更快。在这里,以下查询不会返回任何结果。为什么呢?
查询:
SELECT CustomerName FROM members WHERE CONTAINS(Country, 'Mexico');
数据库:
答案 0 :(得分:0)
您是否尝试过使用 ,如果它适用于您的情况可能会更快
SELECT CustomerName
FROM members
WHERE Country IN ('Mexico')
但是在你的情况下你可以把 %% 放在contains中实际上更快然后包含所以只需使用这个
SELECT CustomerName
FROM members
WHERE CONTAINS(Country, '"*Mexico"');
答案 1 :(得分:0)
试试这个
如果国家/地区列上有全文搜索索引。
SELECT CustomerName FROM members
WHERE CONTAINS(Country, 'Mexico');
否则只做
SELECT CustomerName FROM members
WHERE Country LIKE N'%Mexico%';
有一个unicode字符é
,你需要在字符串前加上N
答案 2 :(得分:0)
MySQL解决方案
select customername
from members
where match(country) against ('Mexico')
MS SQL Server解决方案
创建后,必须始终填充全文索引。 使用以下代码确保索引更新:
ALTER FULLTEXT INDEX ON members SET CHANGE_TRACKING AUTO;
更多信息:https://msdn.microsoft.com/en-us/library/ms142575.aspx
完整示例(包括创建索引时的更改跟踪选项,而不是后来的alter语句中的更改跟踪选项):
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');