sql >> データベース >  >> RDS >> Oracle

Oracleデータベース:BLOBの読み取り方法は?

    UTL_RAW.CAST_TO_RAW(UTL_RAW.CAST_TO_VARCHAR2())を使用して、値を16進数でダンプできます。 。

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

    これは、BLOB列への挿入に使用されるのと同じ形式であるため便利です。

    CREATE GLOBAL TEMPORARY TABLE foo (
        b BLOB);
    INSERT INTO foo VALUES ('1f8b080087cdc1520003f348cdc9c9d75128cf2fca49d1e30200d7bbcdfc0e000000');
    
    DESC foo;
    -- Name Null Type 
    -- ---- ---- ---- 
    -- B        BLOB 
    

    ただし、特定の時点(2000バイト?)で、対応する16進文字列がOracleの最大文字列長を超えています。その場合に対処する必要がある場合は、OracleSQLのBLOBからテキストコンテンツを取得するにはどうすればよいですか DMBS_LOB.SUBSTR<のドキュメント/ code> BLOBのサブストリングを表示できるようにする、より複雑なアプローチの場合。



    1. PHPでMySQLクエリを除外する

    2. MySQL SelectおよびIF()ステートメント

    3. タブ区切りファイルを関係を使用してmysqlに挿入する方法

    4. MySQL 4(5ではない)でコンマ区切りの列を合計する