sql >> Databasteknik >  >> RDS >> Oracle

reguljärt uttryck för radseparerade olika långa ord

Det är på grund av ditt vanliga uttryck. Ändra den för att leta efter bara på varandra följande alfabetiska tecken:

 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 fungerar även för enstaka tecken:

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 kommenterat:

Vänligen ange alltid all information i frågan till att börja med.

Du verkar vara ute efter att dela på ett nyradstecken (vagnretur eller vagnretur/radmatning)

I så fall vill du dela där något inte är en av dessa karaktärer. Jag har använt alla kontrolltecken här eftersom jag är lat men det kommer att fungera för dina angivna data. Om du har några Bell-karaktärer kommer detta inte att fungera, du måste vara mer 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. Hur man använder främmande nycklar med PHP

  2. Oracle 12cR2 nu i Beta

  3. Få oengagerad data i MySQL

  4. JDBC-typ Scroll okänslig och känslig