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

巨大なblobデータをクエリする方法

    DBMS_LOB.substr() 使用する適切な関数です。列にデータがあることを確認してください。

    使用例:

    -- create table
    CREATE TABLE myTable (
    id INTEGER PRIMARY KEY,
    blob_column BLOB
    );
    
    -- insert couple of rows
    insert into myTable values(1,utl_raw.cast_to_raw('a long data item here'));
    insert into myTable values(2,null);
    
    -- select rows
    select id, blob_column from myTable;
    
    ID  BLOB_COLUMN
    1   (BLOB)
    2   null
    
    -- select rows
    select id, DBMS_LOB.substr(blob_column, 1000,1) from myTable;
    
    ID  DBMS_LOB.SUBSTR(BLOB_COLUMN,1000,1)
    1   61206C6F6E672064617461206974656D2068657265
    2   null
    
    -- select rows
    select id, UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.substr(blob_column,1000,1)) from myTable;
    
    ID  UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(BLOB_COLUMN,1000,1))
    1   a long data item here
    2   null
    



    1. java.sql.SQLException:ORA-00932:一貫性のないデータ型:予期されたNUMBERがBINARYを取得しました

    2. MySQL:列のテキストの長さを取得する方法

    3. SQLAlchemy SELECT WITH句/ステートメント(pgsql)

    4. SQLite Nullif()のしくみ