問題の提起: SELECT文の結果が見づらい
Teratermなどのターミナルを使ってDb2にログインし、SELECT文を発行する際、カラムの長さが長すぎて表示が見にくいことはありませんか? 特に項目やカラム長が多いテーブルを調べるとき、結果が1行でも改行して表示されたり表示に問題が起こりがちです。
例えば、次のSYSCAT表をSELECTする例で見ていきましょう。
【テーブル構造の確認】
db2 => describe table syscat.eventmonitors
                    データ・タイ データ・   列の       スケ
列名                プ・スキーマ タイプ名   長さ       ール  NULL
------------------- --------- ------------- ---------- ----- ------
NAME                SYSIBM    VARCHAR              128     0 いいえ
OWNER               SYSIBM    VARCHAR              128     0 いいえ
OWNERTYPE           SYSIBM    CHARACTER              1     0 いいえ
TARGET_TYPE         SYSIBM    CHARACTER              1     0 いいえ
TARGET              SYSIBM    VARCHAR              762     0 いいえ
MAXFILES            SYSIBM    INTEGER                4     0 はい  
MAXFILESIZE         SYSIBM    INTEGER                4     0 はい  
BUFFERSIZE          SYSIBM    INTEGER                4     0 はい  
IO_MODE             SYSIBM    CHARACTER              1     0 はい  
WRITE_MODE          SYSIBM    CHARACTER              1     0 はい  
AUTOSTART           SYSIBM    CHARACTER              1     0 いいえ
DBPARTITIONNUM      SYSIBM    SMALLINT               2     0 いいえ
MONSCOPE            SYSIBM    CHARACTER              1     0 いいえ
EVMON_ACTIVATES     SYSIBM    INTEGER                4     0 いいえ
NODENUM             SYSIBM    SMALLINT               2     0 いいえ
DEFINER             SYSIBM    VARCHAR              128     0 いいえ
VERSIONNUMBER       SYSIBM    INTEGER                4     0 いいえ
MEMBER              SYSIBM    SMALLINT               2     0 いいえ
REMARKS             SYSIBM    VARCHAR              254     0 はい  
【Selectしてみる】
db2 => SELECT EVMONNAME, TARGET_TYPE, OWNER FROM SYSCAT.EVENTMONITORS EVMONNAME TARGET_TYPE OWNER -------------------------------------------------------------------------------------------------------------------------------- ----------- -------------------------------------------------------------------------------------------------------------------------------- DB2DETAILDEADLOCK F DB2INST1 LOCKEVMON U DB2INST1
結果が見づらいですね。。。
このテーブルはNAMEやOWNERなどのカラムは128バイトの長さがあり、ターミナル上での表示が非常に見づらくなります。
解決策: SQLの工夫をして見やすく
Db2では、Oracleのcolumnコマンドに相当する直接的な方法はありませんが、SQLを工夫することで同様の結果を得ることができます。特にSUBSTR関数を使用してカラムの表示長を調整する方法が有効です。
【見やすくフォーマットするためのSQL】
db2 => SELECT SUBSTR(EVMONNAME,1,20) AS EVMON_NAME, TARGET_TYPE, SUBSTR(OWNER,1,10) AS ONR FROM SYSCAT.EVENTMONITORS EVMON_NAME TARGET_TYPE ONR -------------------- ----------- ---------- DB2DETAILDEADLOCK F YDBINST1 LOCKEVMON U YDBINST1
このSQLでは、EVMONNAMEとOWNERカラムの文字数を制限しています。これにより、結果がターミナルにおいて一行で表示され、読みやすくなります。
Oracleでの類似操作
Oracleデータベースに詳しい方のために、Oracleで同じことを実現する方法も紹介します。Oracleではcolumnコマンドを使用してカラムの表示フォーマットを設定できます。
SQL> column EVMONNAME format a20 SQL> column OWNER format a10 SQL> SELECT EVMONNAME, TARGET_TYPE, OWNER FROM SYSCAT.EVENTMONITORS
まとめ
SELECT文の表示カラムを見やすくするためにはSUBSTRを使ってカラムの長さを調節してあげましょう。
 
											 
							
							
							
															 
							
							
							
															 
										
					