2016-03-14 63 views
1

我想知道是否有任何方法可以在CONTAINS谓词中使用REPLACE()谓词。在CONTAINS谓词中使用REPLACE()函数

例如,我知道如果我使用:

SELECT * FROM table WHERE CONTAINS(column, 'searchWord') 

它的工作原理,没有任何问题;但是,如果我使用:

SELECT * FROM table WHERE CONTAINS(REPLACE(column, 'oldPhrase', 'newPhrase'), 'searchWord') 

,因为它期待一列,而不是一个字符串,就会给我一个错误。如果没有办法做到这一点,最好的选择是什么?

+1

嗯。 。 。你可以创建一个计算列和索引。 –

+1

您是否需要全文搜索,或者“LIKE”条款是否满足您的需求?如果没有对模式进行额外的修改,这将起作用,但它在功能上完全不同,因此可能无关紧要。只是一个想法。 –

+0

@MatthewHaugen我有我的查询设置,所以它使用全文搜索,或LIKE子句。如果我可以只写一个同时使用REPLACE和全文搜索的查询,那将解决我的大部分问题。 – Sicypher

回答

1

您是否尝试过使用CTE?

WITH r AS (
    SELECT column0, column1, column2, 
      REPLACE(column, 'oldPhrase', 'newPhrase') col 
     FROM table 
) 
SELECT * 
    FROM r 
    WHERE CONTAINS(col, 'searchWord'); 
+0

我试过用这个,但是我得到一个错误。我需要能够在WITH子句中使用全文索引'新创建的列'。 – Sicypher