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

regulært udtryk for linjeadskilte forskellige lange ord

Det er på grund af dit regulære udtryk. Skift det til at søge efter bare på hinanden følgende alfabetiske tegn:

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

Det virker også for enkelte tegn:

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

Du har kommenteret:

Angiv venligst altid alle oplysningerne i spørgsmålet til at begynde med.

Det ser ud til, at du søger at opdele på et linjeskifttegn (vognretur eller vognretur/linjefeed)

I så fald søger du at opdele, hvor noget ikke er en af ​​disse karakterer. Jeg har brugt alle kontroltegn her, fordi jeg er doven, men det vil fungere for dine angivne data. Hvis du har nogle Bell-karakterer, vil dette ikke virke, du skal være mere specifik.

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. MySQL/SQL:Opdatering med korreleret underforespørgsel fra selve den opdaterede tabel

  2. Flere MySQL-tabel til json_encode

  3. Login-system, der bruger fysiske postgres-brugere, ikke logiske brugere

  4. Sådan indsætter du standarddata i tabellen ved hjælp af import.sql-filen i Hibernate, MySQL Application