我有以下的样本数据来理解需求。
create table ft_test
(
col1 int identity(1,1),
col2 varchar(max)
);
insert into ft_test values('John A Henry');
insert into ft_test values('Dsouza mak Dee');
insert into ft_test values('Smith Ashla Don');
编辑
:
CREATE UNIQUE INDEX UIX_test_Col1 ON ft_test(col1);
CREATE FULLTEXT CATALOG ftcat
WITH ACCENT_SENSITIVITY = OFF
CREATE FULLTEXT INDEX ON ft_test
(col2 LANGUAGE 1033)
KEY INDEX UIX_test_Col1
ON ftcat
WITH STOPLIST = SYSTEM
-
在表的给定列中搜索给定的模式。
-
-
已在所需列上创建全文索引。
-
图案:
oh
-
col2
预期产量:
col1 col2
----------------------
1 John A Henry
尝试:
-
使用全文索引:
CONTAINS
SELECT col1, col2
FROM ft_test1
WHERE CONTAINS(col2, '"*oh*"')
-
使用全文索引:
FREETEXT
SELECT col1, col2
FROM ft_test1
WHERE FREETEXT(col2, '"*oh*"')
-
使用模式索引:
PATINDEX
SELECT col1, col2
FROM ft_test1
WHERE PATINDEX('%oh%',col2)>0
执行计划:
Table Scan
-
使用字符表达式:
CHARINDEX
SELECT col1, col2
FROM ft_test1
WHERE CHARINDEX('oh',col2)>0
得到一个输出。
执行计划:
表格扫描
-
使用
LIKE
.
SELECT col1, col2
FROM ft_test1
WHERE col2 LIKE '%oh%'
得到一个输出。
执行计划: