Читая ваш вопрос, я не уверен, что вы понимаете цель полнотекстового индекса. Полнотекстовый индекс предназначен для поиска текста (один или несколько столбцов) в таблице. И не только в качестве замены:
SELECT *
FROM table
WHERE col1 LIKE 'Bob''s Pizzaria%'
OR col2 LIKE 'Bob''s Pizzaria%'
OR col3 LIKE 'Bob''s Pizzaria%'
Это также позволяет вам искать варианты "Bob's Pizzaria", такие как "Bobs Pizz e ria" (на тот случай, если кто-то опишет пиццерию или забыл вставить 'или чрезмерно усердный анти-SQL- Внедренный код лишил ') или "Robert's Pizza" или "Bob's Pizzeria" или "Bob's Pizza" и т. д. Он также позволяет выполнять поиск "в середине" текстового столбца (char, varchar, nchar, nvarchar и т. д. ) без страшного "% Bob% Pizza%", который исключает любую возможность использования традиционного индекса.
Достаточно с лекцией, однако. Чтобы ответить на ваш конкретный вопрос, я бы создал отдельный столбец (не «вычисляемый столбец») «IdText varchar (10)», а затем триггер AFTER INSERT что-то вроде этого:
UPDATE t
SET IdText = CAST(Id AS varchar(10))
FROM table AS t
INNER JOIN inserted i ON i.Id = t.Id
Если вы не знаете, что такое «вставлено», см. Эту статью MSDN или выполните поиск переполнения стека для «вставлен триггер». Затем вы можете включить столбец IdText в свой полнотекстовый индекс.
Опять же, из вашего примера я не уверен, что полнотекстовый индекс - это то, что вы должны использовать здесь, но опять же ваша реальная ситуация может быть чем-то другим, и вы только что создали этот пример для вопроса. Кроме того, полнотекстовые индексы являются относительно «дорогими», поэтому обязательно проведите анализ затрат и выгод. Вот вопрос переполнения стека вопрос об использовании полнотекстового индекса.