sql >> Database teknologi >  >> RDS >> Oracle

Oracle SQL Regex returnerer ikke forventede resultater

Oracle understøtter ikke ikke-fangende grupper (?:) . Du skal bruge en optagelsesgruppe i stedet for.

Den bryder sig heller ikke om meta-karakteren \s i perl-stil match inde i en tegnklasse [] (det vil matche tegnene \ og s i stedet for mellemrum). Du skal bruge POSIX-udtrykket [:space:] i stedet.

SQL Fiddle

Oracle 11g R2 Schema Setup :

Forespørgsel 1 :

select *
from (
  select column_value str
  from   table(sys.dbms_debug_vc2coll('123','1234','12345','12 135', '1', '12 3'))
)
where regexp_like(str, '\d([()[:space:]#-]*\d){3,}')
 

Resultater :

| STR | |--------| | 1234 | | 12345 | | 12 135 |


  1. Opdel posterne i to kolonner

  2. Sådan forbinder du to tabeller med ssp.class.php

  3. Oprettelse af relationslinks i PostgreSQL via pgAdmin

  4. Sådan bruger du Hibernate Annotations til at tilføje et indeks på en Lob / Clob / Tinyblob