Полнотекстовый индекс SQL Server - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть таблица с полнотекстовым индексом, созданным на нем.

CREATE TABLE dbo._mytable
(
    ID INT CONSTRAINT Pk_mytable PRIMARY KEY CLUSTERED,
    Name NVARCHAR(50)
)
GO

CREATE FULLTEXT CATALOG ft AS DEFAULT
GO  

CREATE FULLTEXT INDEX ON dbo._mytable(Name)   
   KEY INDEX Pk_mytable   
GO

Следующий запрос успешно выполняется

SELECT t.Name AS t_name
FROM dbo._mytable t
WHERE CONTAINS(t.Name, '"mu*"')

Но этот запрос не выполняется

SELECT *
FROM 
    (SELECT t.Name AS t_name
     FROM dbo._mytable t) T
WHERE CONTAINS(T.t_name, '"mu*"')

Ошибка:

Сообщение 7601, уровень 16, состояние 3, строка 7
Невозможно использовать предикат CONTAINS или FREETEXT для столбца 't_name', поскольку он не полнотекстовый индексированный

1 Ответ

0 голосов
/ 30 ноября 2018

Второй выводит ошибку, потому что вы выбираете не из таблицы с полнотекстовым индексом, а из производной таблицы .Движок не может переместить полнотекстовый поиск из внешнего выбора во внутренний.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...