如何将SQL函数Replace作为参数传递给全文索引函数包含?

时间:2015-11-28 15:27:08

标签: sql sql-server

当我将SQL函数Replace作为参数传递给全文索引函数Contains时,会发生错误:

SELECT * 
FROM dbo.T_PRO_ProductContents 
WHERE CONTAINS(REPLACE([Text],'e','b'), 'edara')

错误:

  

'('。

附近的语法不正确

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你不能。 the grammar中不允许这样做。

CONTAINS ( 
     { 
        column_name | ( column_list ) 
      | * 
      | PROPERTY ( { column_name }, 'property_name' )  
     } 
     , '<contains_search_condition>'
     [ , LANGUAGE language_term ]
   ) 

全文索引建立在Text列上。

对其应用任意函数意味着索引不可用。

它不会在运行时创建动态匹配表达式的全文索引。

您可以做的最好的事情是创建一个公式为REPLACE([Text],'e','b')的计算列,然后创建全文索引。