2010-06-23 2 views
6

J'ai une colonne de type RAW dans ma base de données. Comment puis-je l'utiliser dans where clause?
-à-dire pour obtenir uniquement les valeurs avec troisième octet égal à 4.
cela ne fonctionne pas:Oracle type de données brut dans where clause

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

Retaillé: - sql. – pakore

Répondre

8

utiliser les fonctions du package UTL_RAW d'interagir avec RAWs, par exemple:

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

UTL_RAW lien ci-dessus donne un 404. Le lien suivant fonctionne, mais aujourd'hui: https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_raw.htm#BABFGDDG – anjanb

+0

@anjanb: merci, j'ai mis à jour le lien –

0

On peut également utiliser la fonction REGEXP_LIKE pour sélectionner des lignes avec le type de données RAW:

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

Dans mon cas d'utilisation, cette méthode est un peu plus rapide que utl_raw.substr.