2016-03-14 100 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