2009-09-14 46 views
1

我需要檢查,看是否有串在其內具有下列精確模式,即一種手段:的Oracle PL/SQL REGEXP_LIKE/REGEXP_INSTR

(P) 

例子在那裏,這將是真實的是:

「測試系統(P)」

不確定雖然如何檢查案件時不會有「(P)」的字符串,即:

「測試系統(GUI的教授)」 - 在這種情況,這會b假,但我使用REGEXP_LIKE,它實際上返回TRUE。

我只希望它在搜索字符串中存在'(P)'的確切字符串時返回True。

任何使用PL/SQL實現這個功能的幫助都很好。

謝謝。

回答

4

用途:

REGEX_LIKE(t.column, '\(P\)') 

Regular-Expressions.info是一個很好的資源。

定期INSTR將工作(甲骨文8I +):

WHERE INSTR(t.column, '(P)') > 0 --column contains '(P)' 

WHERE INSTR(t.column, '(P)') = 0 --column does NOT contain '(P)' 

LIKE也工作:

WHERE t.column LIKE '%(P)%' --column contains '(P)' 

WHERE t.column NOT LIKE '%(P)%' --column does NOT contain '(P)' 
+0

感謝那個傢伙 – tonyf 2009-09-14 05:02:30

+0

小心空出 – 2009-09-14 18:08:55

2

嘗試like

WHERE thing like '%(P)%'; 
+0

同意。如果你沒有檢查正則表達式,爲什麼要使用REGEXP函數 – 2009-09-14 05:20:59

0

我要堅持REGEXP_*功能,爲你無論如何,都需要練習它們,並且知道正則表達式將很好地爲您服務。

這些都是很好的答案,除了在小馬的第一個答案中的拼寫錯誤。 :

錯字的是,有一個P從REGEX_LIKE丟失:

採寫:REGEX_LIKE(t.column, '\(P\)')

正確:REGEXP_LIKE(T.COLUMN, '\(P\)')

的 '\' 是轉義字符,上面寫着「不要不尋找下一個角色的象徵意義,而是尋找文字本身。「