Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle-Datenbank:Wie liest man ein BLOB?

Sie können den Wert in Hex mit UTL_RAW.CAST_TO_RAW(UTL_RAW.CAST_TO_VARCHAR2()) ausgeben .

SELECT b FROM foo;
-- (BLOB)

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

Dies ist praktisch, da dies das gleiche Format ist, das zum Einfügen in BLOB-Spalten verwendet wird:

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

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

Ab einem bestimmten Punkt (2000 Byte?) überschreitet der entsprechende Hex-String jedoch die maximale Stringlänge von Oracle. Wenn Sie diesen Fall behandeln müssen, müssen Sie Wie erhalte ich Textinhalte von BLOB in Oracle SQL mit der Dokumentation für DMBS_LOB.SUBSTR für einen komplizierteren Ansatz, der es Ihnen ermöglicht, Teilstrings des BLOBs zu sehen.