2

在我的 SQL Server 2008 RC2 数据库中,我有一个表 T,它在列 FT 上定义了全文索引。我正在尝试派生一个包含列 FT 的表,然后使用全文操作从该派生表中进行选择,如下所示:

SELECT ft_alias FROM
  (SELECT ft AS ft_alias FROM t) t_alias
WHERE CONTAINS(ft_alias, 'abc')

但这给出了错误消息:

不能对列 'ft_alias' 使用 CONTAINS 或 FREETEXT 谓词,因为它不是全文索引。

没门!优化器无法确定该列是否为全文索引?我觉得这很令人惊讶,因为它可以并且将在具有标准索引的列上使用索引。

我意识到在这种简单的情况下,我可以在没有派生表的情况下重写查询,但是我们的应用程序正在从用户查询生成任意复杂的 SQL,并且使用派生表使我们更容易生成正确的 SQL。

真的没有办法解决这个问题吗?

4

0 回答 0