在我的 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。
真的没有办法解决这个问题吗?