Почему мой SQL-запрос пытается преобразовать значение nvarchar в int? (используя CONTAINSTABLE ()) - PullRequest
1 голос
/ 10 мая 2011

Я пытаюсь заставить работать полнотекстовый поиск в SQL Server 2008 R2.Я работал с нашим администратором, и мы считаем, что у нас есть каталог с индексами, успешно настроенными.Теперь я пытаюсь запросить индексированную таблицу, используя функции FullText

Это работает без проблем:

select *
from mPages
where contains(bodytext, ' "a dog" ')

Однако, когда я пытаюсь получить значения ранга с помощью containstable(),Я получаю сообщение об ошибке.

select mPages.bodytext, KEY_TBL.RANK
from mPages
     INNER JOIN
     CONTAINSTABLE(mPages, bodyText,
                    'dog') AS KEY_TBL
     ON mPages.pageID = KEY_TBL.[KEY]
ORDER BY KEY_TBL.RANK DESC;

Ошибка:

Msg 245, Level 16, State 1, Line 2
Conversion failed when converting the nvarchar value 'About' to data type int.

Значение «About» находится в столбце с именем pagename.Я не понимаю, как заставить эту ошибку исчезнуть.

Любая помощь?

1 Ответ

0 голосов
/ 10 мая 2011

Вероятно, он жалуется на эту строку:

ON mPages.pageID = KEY_TBL.[KEY]

Если pageID является int, он попытается преобразовать key в int, чтобы можно было сравнить столбцы.Преобразование идет не так, как планировалось.

...