显然不符合全文索引的精神。
单词
是一串没有的字符
空格或标点符号。
短语
是一个或多个带空格的单词
每个单词之间。
和
标点符号被忽略。所以,
包含(测试,“计算机故障”)
匹配具有值的行,“哪里
是我的电脑吗?找不到它
会很贵。”
我不确定你的选择是什么。
显然LIKE 工作正常:
SELECT *
FROM dbo.stackoverflow_319730
WHERE txtcol LIKE 'arg[ [ ]0]'
但是
SELECT *
FROM dbo.stackoverflow_319730
WHERE CONTAINS(txtcol, '"arg[0]"')
甚至匹配包含'arg[1]' 的列,例如:
CREATE TABLE [dbo].[stackoverflow_319730](
[id] [int] IDENTITY(1,1) NOT NULL,
[txtcol] [text] NOT NULL,
CONSTRAINT [PK_stackoverflow_319730] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
INSERT INTO [dbo].[stackoverflow_319730] (txtcol) VALUES ('arg[0]')
INSERT INTO [dbo].[stackoverflow_319730] (txtcol) VALUES ('arg[1]')
INSERT INTO [dbo].[stackoverflow_319730] (txtcol) VALUES ('some other text')
INSERT INTO [dbo].[stackoverflow_319730] (txtcol) VALUES ('arg[0], arg[1]')
EXEC sp_fulltext_catalog 'FTCatalog','create'
EXEC sp_fulltext_table 'stackoverflow_319730', 'create', 'FTCatalog', 'pk_stackoverflow_319730'
EXEC sp_fulltext_column 'stackoverflow_319730', 'txtcol', 'add'
EXEC sp_fulltext_table 'stackoverflow_319730','activate'
EXEC sp_fulltext_catalog 'FTCatalog', 'start_full'
SELECT *
FROM dbo.stackoverflow_319730
WHERE txtcol LIKE 'arg[ [ ]0]'
SELECT *
FROM dbo.stackoverflow_319730
WHERE CONTAINS(txtcol, '"arg[0]"')
结果表明标点符号存在问题:
id txtcol
----------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 arg[0]
(1 row(s) affected)
id txtcol
----------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 arg[0]
2 arg[1]
4 arg[0], arg[1]
Informational: The full-text search condition contained noise word(s).