ORACLE: Comment convertir un BLOB à VARCHAR2
J'ai une table qui ont un type de données BLOB. Je voulais obtenir la valeur de la GOUTTE et de la convertir en Varchar2 ou une chaîne de texte format lisible. Je suis en utilisant le code ci-dessous. Le résultat attendu est juste une chaîne varchar2. Cependant, il est de retour caractères spéciaux que je ne peux pas lire.
SQL:
select UTL_RAW.CAST_TO_VARCHAR2(dbms_lob.substr(MY_FIELD_BLOB_TYPE))
from MY_BLOB_TABLE
where MY_BLOB_TABLE_ID = 12345
;
RÉSULTAT:
?p?C?.un?J'?8go?!??2f??mc?c?:0?:b?n?7i?1M9s????S?un?6gv?a]?y?m??-;???r??2n?B?20???S?4n??l?%d???EM?9 ?q???3 ?m??d? ???3e???[??M1o?n???m??'????9m??????%?`??;n???un?X?????7 >9v???/?m???n?9i???4H??o??k????N?.u???2xk?6y@??c?G??U????#B????????5~?Gc?$????My?u??b????????T???1fb?_??k?ek???wk Hi???S?t???>??&j'?p??
- Double Possible de Comment puis-je obtenir le contenu textuel de BLOB Oracle SQL
- Donc, ce est le résultat attendu?
- de quoi êtes-vous ranger dans le BLOB? ce sont les types de données binaires qui n'ont pas contenir de texte...
- salut à tous, je m'attends à une chaîne de sortie de texte sans mise en forme RTF. Je peux afficher la chaîne attendu la sortie du texte à l'aide d'une application 3ème partie que je ne peux pas voir les codes. Si les valeurs sont tout simplement de la chaîne.
Vous devez vous connecter pour publier un commentaire.
Résultat:
P3A/Qz8uYT9JPzhnYj8hPz8yZj8/bWM/Yz86MD86Yj9uPzdpPzFNOXM/Pz8/Uz9h
PzZndj9hXT95P20/Py07Pz8/cj8/Mm4/Qj8yMD8/P1M/CG4/P2w/JWQ/Pz9FTT85
ID9xPz8/MyA/bT8/ZD8gPz8/M2U/Pz9bPz9NMW8/bj8/P20/Pyc/Pz8/OW0/Pz8/
Pz8lP2A/PztuPz8/YT9YPz8/Pz83ID45dj8/P3w/bT8/P24/" OWk/Pz80SD8/bz8/
az8/Pz9OPy51Pz8/MnhrPzZ5QD8/Yz9HPz9VPz8/PyNCPz8/Pz8/Pz81fj9HYz8k
Pz8/P015P3U/P2I/Pz8/Pz8/P1Q/Pz8xZmI/Xz8/az9laz8/P3drIEhpPz8/Uz90
Pz8/Pj8/Jmk/cD8/
Je ne peux pas garantir que cela fonctionne dans votre cas, cependant, employant 2 choses a fait le tour:
dit que telle une colonne blob est compressé
select UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(UTL_COMPRESS.LZ_UNCOMPRESS(MY_FIELD_BLOB_TYPE),2000,1))
from MY_BLOB_TABLE
where MY_BLOB_TABLE_ID = 12345
;
Pour obtenir le cours des 2000 caractères, vous changeriez le substr gamme: