Dans Oracle, le type de données RAW est approprié pour stocker des valeurs binaires.
Le problème avec l'utilisation de types de données de caractères pour stocker des données binaires est que les valeurs sont soumises à la traduction du jeu de caractères .
Si le jeu de caractères du client ne correspond pas au jeu de caractères de la base de données, les valeurs sont sujettes à traduction. (C'est-à-dire qu'une valeur binaire dans un encodage représente un caractère particulier, mais ce caractère peut être représenté par une valeur binaire différente dans un autre jeu de caractères.
Avec le type de données caractère, Oracle conserve la valeur "caractère", pas la valeur binaire encodée.
Si vous souhaitez utiliser un type de données caractère (par exemple CHAR ou VARCHAR2) pour stocker des valeurs binaires, vous devez vraiment coder la valeur binaire sous forme de texte brut, puis stocker et récupérer la valeur codée. Deux encodages binaires populaires sont l'hexadécimal et le base64 (uuencode).
Oracle fournit les fonctions intégrées RAWTOHEX et HEXTORAW pour encoder et décoder le binaire (type de données RAW) sous forme de chaînes hexadécimales (type de données VARCHAR2).