sql >> Databasteknik >  >> RDS >> Oracle

Oracle-databas:Hur läser man en BLOB?

Du kan dumpa värdet i hex med 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

Detta är praktiskt eftersom du detta är samma format som används för att infoga i BLOB-kolumner:

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

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

Men vid en viss punkt (2000 byte?) överskrider motsvarande hex-sträng Oracles maximala stränglängd. Om du behöver hantera det fallet måste du kombinera Hur får jag textinnehåll från BLOB i Oracle SQL med dokumentationen för DMBS_LOB.SUBSTR för ett mer komplicerat tillvägagångssätt som gör att du kan se delsträngar av BLOB.



  1. Använder utf8mb4 med php och mysql

  2. Hur man konverterar en kommaseparerad lista till rader i SQL Server

  3. Användarsystem - Flera roller i MySQL-databasen

  4. Hur kan jag fixa det här felet:SQL92 som inte stöds?