Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle regexp_replace पूरे शब्दों पर

ऐसा करने का एक तरीका यहां दिया गया है - एक पुनरावर्ती क्वेरी के साथ (Oracle 11.2 या उच्चतर की आवश्यकता है)। इसके तेज़ होने की उम्मीद न करें।

with stg as
(
  select '(ofof+ol)' str from dual union all
  select '(oof+ol+of)'   from dual union all
  select '(*of + 2)'     from dual union all
  select '(of*of + 2)'   from dual 
),
rec ( str, lvl, new_str ) as
(
  select str, 1, upper(str)
    from stg
  union all
  select str, lvl + 1, 
         regexp_replace(new_str, '(\W|^)(OF)(\W|$)', '\1"OF"\3', 1, lvl)
  from   rec
  where  regexp_instr(new_str, '(\W|^)(OF)(\W|$)', 1, lvl) > 0
)
select str, new_str
from   rec
where  regexp_instr(new_str, '(\W|^)(OF)(\W|$)', 1, lvl) = 0
;

STR          NEW_STR          
------------ ------------------
(ofof+ol)    (OFOF+OL)         
(oof+ol+of)  (OOF+OL+"OF")     
(*of + 2)    (*"OF" + 2)       
(of*of + 2)  ("OF"*"OF" + 2)   


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. परिदृश्य और चरणों को अंतिम परिवर्तन समस्या मिलती है

  2. Oracle SQL में वर्तमान तिथि से 30 वर्ष घटाना

  3. T4CConnection को OracleConnection में कास्ट करने में त्रुटि

  4. ऑरैकल में संख्या (7,2) को वर्कर में कैसे बदलें?

  5. एसक्यूएल प्रश्न कैसे लिखें