簡體   English   中英

Oracle PL / SQL REGEXP_LIKE / REGEXP_INSTR

[英]Oracle PL/SQL REGEXP_LIKE / REGEXP_INSTR

我需要一種檢查字符串是否具有以下確切模式的方法,即:

(P)

這是正確的示例是:

Test System (P)

我不確定如何檢查沒有'(P)'的字符串的情況,即:

“測試系統(Professional的GUI)”-在這種情況下,這將是錯誤的,但我使用的是REGEXP_LIKE,它實際上返回TRUE。

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

如何在PL / SQL中執行此操作?

采用:

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

Regular-Expressions.info是一個不錯的資源。

常規INSTR可以使用(Oracle 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)'

嘗試like

WHERE thing like '%(P)%';

我會堅持使用REGEXP_*函數,因為無論如何您都需要練習它們,並且知道正則表達式會很好地為您服務。

這些都是很好的答案,除了小馬的第一個答案有錯字。

打字錯誤是REGEX_LIKE中缺少P

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

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

'\\'是轉義字符,它表示“不要尋找下一個字符的象征意義,而是尋找文字字符本身。”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM