Tengo una columna de tipo RAW en mi base de datos. ¿Cómo puedo usarlo en where clause?
es decir, para obtener sólo los valores con tercer byte igual a 4.
esto no funciona:oracle raw datatype in where cláusula
SELECT v from T where v[3]=4
Tengo una columna de tipo RAW en mi base de datos. ¿Cómo puedo usarlo en where clause?
es decir, para obtener sólo los valores con tercer byte igual a 4.
esto no funciona:oracle raw datatype in where cláusula
SELECT v from T where v[3]=4
utilizar las funciones del paquete UTL_RAW para interactuar con raws, por ejemplo:
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
El enlace UTL_RAW de arriba da un 404. El siguiente enlace funciona, aunque hoy: https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_raw.htm#BABFGDDG – anjanb
@anjanb: gracias, he actualizó el enlace –
También se puede usar la función REGEXP_LIKE para seleccionar filas con el tipo de datos SIN PROCESAR:
select * from test where REGEXP_LIKE(a,'^....04.*')";
En mi caso de uso, este método es un poco más rápido que utl_raw.substr.
Reetiquetado: - sql. – pakore