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

個別の列フォーマットを使用せずに、sqlplusによる列名の切り捨てを防止する

    試すことができることの1つは、「columnxformata20」コマンドを動的に生成することです。次のようなもの:

    set termout off
    set feedback off
    
    spool t1.sql
    select 'column ' || column_name || ' format a' || data_length
    from all_tab_cols
    where table_name='YOUR_TABLE'
    /
    spool off
    
    @t1.sql
    set pagesize 24
    set heading on
    spool result.txt
    select * 
    from  YOUR_TABLE;
    and   rownum < 30;
    spool off
    

    このサンプルはVARCHAR2でのみ機能することに注意してください。たとえば、DATEまたはNUMBERに対して生成された「列」コマンドを変更するには、デコードを追加する必要があります。

    更新:元のSQLはSQL*Plusの動作を実際には変更しないことが判明しました。私が考えることができる唯一のことは、次の方法でフィールド名を1つの文字値A、B、Cなどに名前変更することです。

    select 'column ' || column_name ||
           ' heading "' ||
           chr(ascii('A') - 1 + column_id) ||
           '"'
    from all_tab_cols
    where table_name='YOUR_TAB_NAME'
    

    次のような出力が生成されます:

    column DEPT_NO heading "A"
    column NAME heading "B"
    column SUPERVIS_ID heading "C"
    column ADD_DATE heading "D"
    column REPORT_TYPE heading "E"
    


    1. Javascriptを介してMySQLクエリを渡す

    2. MySQLDBから値を取得するときに誤ってエンコードされた文字を取得する

    3. SQLサーバーでの日付の取得、CURRENT_TIMESTAMPとGetDate()

    4. Mysqlで重複以上を検索し、最初の入力を除いてそれらを削除します