2012-03-07 15 views
20

vorrei creare una query in cui seleziono tutti i record che contengono caratteri che non sono az o AZOracle SQL - REGEXP_LIKE contiene caratteri diversi da az o AZ

quindi qualcosa di simile

SELECT * FROM mytable WHERE REGEXP_LIKE(column_1, '![A-Z] [a-z]')

+1

IIRC, provare 'NON REGEXP_LIKE()', anche se questo è per MySQL. – Bojangles

+1

@JamWaffles Se ho capito, l'OP sta cercando risultati contenenti caratteri non alpha. Quindi un 'NOT' restituirebbe solo le righe che contengono _no_ caratteri alfa. –

+1

@ Michael Oops! Grazie per averlo notato. Mi sento abbastanza sciocco ora. – Bojangles

risposta

33

Il ^ nega una classe di caratteri:

SELECT * FROM mytable WHERE REGEXP_LIKE(column_1, '[^A-Za-z]') 
+0

Quando eseguiamo, restituiamo record come "AB Future". Stiamo facendo qualcosa di sbagliato? Eseguendo la stessa query come sopra ... FYI ha una domanda simile aperta a http://stackoverflow.com/questions/30948012/oracle-query-to-find-string-not-contain-characters –

+1

@Marcus Il modello sembra per ogni carattere diverso dalle lettere maiuscole/minuscole e il tuo singolo spazio corrisponde. Non impone che la stringa contenga _solo_ non lettere. Se è necessario assicurarsi che i caratteri _no_ non lettera siano abbinati, ancorare l'espressione regolare come '^ [^ A-Za-z] + $' - Penso che sia quello che stai chiedendo. Il motivo ancorato non dovrebbe corrispondere a causa dello spazio. –

+0

Fondamentalmente sto cercando una stringa che abbia caratteri _other_ di AZ, az insieme a caratteri aggiunti come 0-9, ',', '-', ecc. –

9

Qualcosa di simile

select * 
    from foo 
where regexp_like(col1, '[^[:alpha:]]') ; 

dovrebbe funzionare

SQL> create table foo(col1 varchar2(100)); 

Table created. 

SQL> insert into foo values('abc'); 

1 row created. 

SQL> insert into foo values('abc123'); 

1 row created. 

SQL> insert into foo values('def'); 

1 row created. 

SQL> select * 
    2 from foo 
    3 where regexp_like(col1, '[^[:alpha:]]') ; 

COL1 
-------------------------------------------------------------------------------- 
abc123 
Problemi correlati