一所懸命に手抜きする

デスクワークばかりのスポーツ嫌いで50歳も過ぎ、いよいよ足腰に衰えを感じつつある昨今。

AS400の列名は英数字でも、SYSCOLUMNSに日本語列名みたいなもの・説明がある!どうやって取得する?

関係データベースf:id:a_habakiri:20161229134725p:plain:w1

RDMSのカタログは表データ

 RDBMS(リレーショナルデータベース)は、いわゆる表形式データと、それを管理するデータ(カタログ)に大別できます。表形式データを扱うための言語がSQLです。
 前回紹介した、重要情報が詰まったカタログ自身も表形式データです。

カタログ自身も表

 カタログ自身も表なので、SQLで参照することができます。

AS/400DB2におけるカタログの主な内容
SQL操作 格納される情報 内容 DB2での格納先表名
CREATE TABLE 表情報 ライブラリ名・表名・作成者名・列数など SYSTABLES
CREATE TABLE 列情報 表名・列名・データ型・列別名・キー情報など SYSCOLUMNS
CREATE INDEX 索引情報 表名・索引名など SYSINDEXES
CREATE VIEW ビュー情報 ファイル名・SELECT文など SYSVIEWS
GRANT 権限情報 表名・許可されているユーザーなど SYSTABAUTH
日本語列情報がカタログにあるなら取得したい

 上表の列別名は日本語対応です。ここに日本語で項目名を記述してあれば(システム部門に期待しましょう)それを取得したいものです。

列(column)の日本語別名を取得するSQL
SELECT TBNAME, NAME, LABEL FROM QSYS2/SYSCOLUMNS WHERE TBNAME='表名' AND NAME='列名'

 このSQLは表名・列名・列説明(日本語対応)をカタログから取得します。
 STRQRYでもかまいませんし、データ転送でも可能です。ただしAS400で全角文字表示対応となっていなければ端末画面では正しく表示できません。その場合には何らかのSQLクライアントを利用することになります。