[英]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.