2010-06-23 13 views
6

Ho una colonna di tipo RAW nel mio database. Come posso usarlo nella clausola where?
cioè per ottenere valori solo con terzo byte pari a 4.
questo non funziona:tipo di dati oracle raw in where clausola

SELECT v from T where v[3]=4 
+0

Ricomposto: - sql. – pakore

risposta

8

utilizzare le funzioni del pacchetto UTL_RAW per interagire con raws, ad esempio:

SQL> create table test (a raw(16)); 

Table created 

SQL> insert into test values ('FF00FF00FF'); 

1 row inserted 

SQL> select * from test where utl_raw.substr(a, 3, 1) = 'FF'; 

A 
-------------------------------- 
FF00FF00FF 
+0

Il link UTL_RAW sopra dà un 404. Il seguente link funziona, anche se oggi: https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_raw.htm#BABFGDDG – anjanb

+0

@anjanb: grazie, ho aggiornato il link –

0

Si può anche utilizzare la funzione REGEXP_LIKE per selezionare le righe con tipo di dati RAW:

select * from test where REGEXP_LIKE(a,'^....04.*')"; 

Nel mio caso d'uso questo metodo è un po 'più veloce di utl_raw.substr.