Oracle
 sql >> Database >  >> RDS >> Oracle

Database Oracle:come leggere un BLOB?

Puoi scaricare il valore in formato esadecimale usando UTL_RAW.CAST_TO_RAW(UTL_RAW.CAST_TO_VARCHAR2()) .

SELECT b FROM foo;
-- (BLOB)

SELECT UTL_RAW.CAST_TO_RAW(UTL_RAW.CAST_TO_VARCHAR2(b))
FROM foo;
-- 1F8B080087CDC1520003F348CDC9C9D75128CF2FCA49D1E30200D7BBCDFC0E000000

Questo è utile perché questo è lo stesso formato utilizzato per l'inserimento nelle colonne BLOB:

CREATE GLOBAL TEMPORARY TABLE foo (
    b BLOB);
INSERT INTO foo VALUES ('1f8b080087cdc1520003f348cdc9c9d75128cf2fca49d1e30200d7bbcdfc0e000000');

DESC foo;
-- Name Null Type 
-- ---- ---- ---- 
-- B        BLOB 

Tuttavia, a un certo punto (2000 byte?) la stringa esadecimale corrispondente supera la lunghezza massima della stringa di Oracle. Se devi gestire quel caso, dovrai combinare Come ottengo contenuti testuali da BLOB in Oracle SQL con la documentazione per DMBS_LOB.SUBSTR per un approccio più complicato che ti permetterà di vedere le sottostringhe del BLOB.