Итак, здесь есть пара проблем. Вы можете использовать CONTAINS
только для полнотекстового индексированного столбца. Если ваша таблица настроена таким образом, то замечательно!
Ваша вторая проблема заключается в том, что синтаксис CONTAINS
немного неуклюж, и ему не нравится сложность. Вы можете обойти это, используя выражение общей таблицы, например:
DECLARE @table TABLE (column1 NVARCHAR(100));
INSERT INTO @table SELECT 'phrase 1.1;phrase 1.2;phrase 1.3;'
INSERT INTO @table SELECT 'phrase 2.1;phrase 2.2;phrase 2.3;'
SELECT LEFT(column1, CHARINDEX(';', column1) - 1) FROM @table;
WITH x AS (SELECT LEFT(column1, CHARINDEX(';', column1) - 1) AS search FROM @table)
SELECT * FROM x WHERE CONTAINS(x.search, 'phrase 1.2');
Заметив, что это не сработает, потому что @ table.column1 не полнотекстовый индексированный. Но он обходит синтаксическую ошибку и может быть адаптирован для вашего случая. Как то так:
WITH x AS (SELECT LEFT(column1, CHARINDEX(';', column1) - 1) AS search FROM table1)
SELECT * FROM x
WHERE CONTAINS(search, <search query>)