2009-11-23 59 views
2

我正在尋找一個可以在Oracle中使用的角色,以獲得所有結果。Oracle使用contains關鍵字選擇所有行

如果我搜索在標題欄的字符串「測試」我用這個語句:

select * 
from my_table 
where contains (title, 
    '<query><textquery grammar="CTXCAT">test</textquery></query>') > 0 

有了這個說法,我得到它具有「測試」包含在標題欄-STRING行。

但是:有沒有什麼辦法可以使用包含並選擇所有行?

+0

該列是哪種類型?它是CLOB嗎? – 2009-11-23 17:21:14

+0

您可以修改where子句,還是必須遵循包含()> 0的格式? – 2009-11-23 17:27:02

+0

DataColumn是VarChar的類型。 不,這是問題 - 我不能修改where子句 - 必須使用contains。 – Marco 2009-11-24 08:55:25

回答

0

這會幫你嗎?

select * from my_table 
where title like 
    '<query><textquery grammar="CTXCAT">%</textquery></query>' 

這使用LIKE語法和%通配符來實現我認爲你想要的。

+0

不,我需要使用包含關鍵字:( – Marco 2009-11-23 14:18:06

+0

爲什麼你只能使用CONTAINS關鍵字?LIKE是這樣做的方式 – thecoop 2009-11-23 14:22:49

+0

通過使用包含oracle正在搜索任何順序的每個單詞 btw:我試過「就像「 - 只是爲了測試 - 對我來說不起作用 – Marco 2009-11-23 14:32:35

1

該文檔說與Oracle Text CONTAINS()謂詞通配符是%_,就像LIKE謂詞一樣。

以下工作?我沒有一個方便測試的Oracle實例。

select * 
from my_table 
where contains (title, 
    '<query><textquery grammar="CTXCAT">%</textquery></query>') > 0 
+0

我檢查了Oracle文檔,並且%在CONTAINS()的text_query參數中作爲通配符 工作 – 2009-11-23 19:48:09

+0

我試着用這個語句「%」之前,並得到一個空的結果表。 – Marco 2009-11-24 09:00:21