sql >> Database >  >> RDS >> Oracle

reguliere expressie voor lijngescheiden verschillende lange woorden

Het komt door je reguliere expressie. Wijzig het om slechts . te zoeken opeenvolgende alfabetische tekens:

 select regexp_substr('abc
 def
 ghi', '[[:alpha:]]+', 1 ,level)
   from dual
connect by regexp_substr('abc
def
ghi', '[[:alpha:]]+', 1 ,level) is not null

Het werkt ook voor losse tekens:

select regexp_substr('a
b
c', '[[:alpha:]]+', 1 ,level)
from dual
     connect by regexp_substr('a
b
c', '[[:alpha:]]+', 1 ,level) is not null;

Je hebt gereageerd:

Gelieve altijd eerst alle informatie in de vraag te vermelden.

Het lijkt erop dat u wilt splitsen op een teken van een nieuwe regel (carriage return of carriage return/line feed)

In dat geval wil je opsplitsen waar iets niet is een van deze karakters. Ik heb hier alle controletekens gebruikt omdat ik lui ben, maar het zal werken voor uw verstrekte gegevens. Als je een aantal Bell-tekens hebt, werkt dit niet, je moet specifieker zijn.

with the_data as ( 
select 'a
b
c' as dat
  from dual
       )
 select regexp_substr(dat, '[^[:cntrl:]]+', 1 ,level)
  from the_data
connect by regexp_substr(dat, '[^[:cntrl:]]+', 1 ,level) is not null;


  1. Hoe MySQL op Ubuntu te installeren en configureren

  2. MySQL sorteren op een lijst

  3. Geef de databasestructuur weer van Delphi (rad studio)

  4. Oracle sql:volgorde op en afzonderlijke clausule