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
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
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
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
@anjanb: grazie, ho aggiornato il link –
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.
Ricomposto: - sql. – pakore