sql >> Databáze >  >> RDS >> Oracle

Databáze Oracle:Jak číst BLOB?

Hodnotu můžete vypsat v hexadecimálním formátu pomocí 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

To je užitečné, protože se jedná o stejný formát, jaký se používá pro vkládání do sloupců BLOB:

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

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

V určitém bodě (2000 bajtů?) však odpovídající hexadecimální řetězec překračuje maximální délku řetězce Oracle. Pokud potřebujete vyřešit tento případ, budete muset zkombinovat Jak získám textový obsah z BLOB v Oracle SQL s dokumentací pro DMBS_LOB.SUBSTR pro složitější přístup, který vám umožní vidět podřetězce BLOB.



  1. Jak vypočítat čtverec v SQL

  2. pomocí jarních spouštěcích profilů s kontextovým atributem liquibase changeset ke správě rozsahu změnové sady

  3. postgres:najděte všechny celočíselné sloupce s aktuální maximální hodnotou

  4. Co znamená FixedLenNullInSource v sp_help?