Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да извлечете група от регулярен израз в Oracle?

Третият параметър на функцията REGEXP_SUBSTR показва позицията в целевия низ (de_desc във вашия пример), където искате да започнете да търсите. Ако приемем, че в дадена част от низа е намерено съвпадение, това не влияе на това, което се връща.

В Oracle 11g има шести параметър на функцията, който според мен е това, което се опитвате да използвате, което показва групата за улавяне, която искате да бъде върната. Пример за правилно използване би бил:

SELECT regexp_substr('abc[def]ghi', '\[(.+)\]', 1,1,NULL,1) from dual;

Където е последният параметър 1 посочете номера на групата за заснемане, която искате да бъде върната. Ето връзка към документацията, която описва параметъра.

10g изглежда няма тази опция, но във вашия случай можете да постигнете същия резултат с:

select substr( match, 2, length(match)-2 ) from (
SELECT regexp_substr('abc[def]ghi', '\[(.+)\]') match FROM dual
);

тъй като знаете, че мачът ще има точно един излишен знак в началото и края. (Алтернативно можете да използвате RTRIM и LTRIM, за да премахнете скоби от двата края на резултата.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Шифроване на парола в R - за свързване към Oracle DB с помощта на RODBC

  2. Oracle PL/SQL:Проверете дали BLOB или CLOB са празни

  3. Какво представляват подзаявките в oracle

  4. Oracle Изтриване на редове, съвпадение на множество стойности

  5. Как мога да задам персонализиран формат за дата и час в Oracle SQL Developer?