◀ 7.

Db2のデータ型一覧|LUWの文字列・数値・日時と型選択

▶

Db2の記事として修復しました。Db2の文字列・数値・日時等の型を選ぶための一覧です。JavaScript/Vueのtypeofやpropsの説明ではありません。以下は主にLUWを対象とし、旧z/OS資料の範囲・上限・表現を全製品へ一般化しないよう訂正しました。

Db2で対象と現在値を確認し、変更の前提と検証を分ける図

この記事の要点
  • Db2の主要データ型の整理。旧版の説明も対象製品を分けて訂正
  • ストリング系: CHAR / VARCHAR / CLOB / GRAPHIC / VARGRAPHIC / DBCLOB / BINARY
  • 数値系: SMALLINT / INTEGER / BIGINT / DECIMAL / REAL / DOUBLE
  • 日時系: DATE / TIME / TIMESTAMP

 

以下、公式サイトは旧z/OS 10資料への参照として保持します。LUWの現行仕様そのものではなく、以下は用途を説明するために整理・訂正した内容です。

 

ストリング

文字、数字、および特殊文字の組み合わせを含むデータ。 ストリング・データ・タイプの一覧を以下に示します。

CHARACTER: 固定長の文字ストリング。このデータ・タイプに対する共通のショート・ネームは CHAR です。

VARCHAR: 可変長の文字ストリング。

CLOB: 可変長の文字のラージ・オブジェクト・ストリングであり、VARCHAR データ・タイプの制限を超える可能性のある文字ストリングに対して、一般的に使用します。

GRAPHIC: 固定長のグラフィック・ストリングであり、2 バイト文字を含みます。

VARGRAPHIC: 可変長のグラフィック・ストリングであり、2 バイト文字を含みます。

DBCLOB: ラージ・オブジェクトにおける 2 バイト文字の可変長ストリングです。

BINARY: コード・ページに関連付けられていない一連のバイト列。

VARBINARY: 可変長のバイナリー・ストリング。

BLOB: ラージ・オブジェクトにおける可変長のバイナリー・ストリング。

XML: XML文書を扱う型です。内部値は文字列ではなく、単なるVARCHAR/CLOBと同一視しません。文字列との交換にはXMLPARSE/XMLSERIALIZE等の扱いを確認します。

 

数値

数字を含むデータ。数値データ・タイプの一覧を以下に示します。

SMALLINT: 符号付き16ビット整数。範囲は-32768〜32767。最大値だけでなく負値と将来の増加も見て選びます。

INTEGER または INT: 符号付き32ビット整数。範囲は-2147483648〜2147483647。アプリ側の整数型と、JSON等へ渡した後の精度も別に確認します。

BIGINT: 符号付き64ビット整数。範囲は-9223372036854775808〜9223372036854775807。識別番号でも先頭ゼロを保持したい値は、整数として扱うのが適切かを先に判断します。

DECIMAL または NUMERIC: 10 進 数は、暗黙の小数点を持つ パック 10 進数です。 小数点の位置は、数値の精度および位取りによって決まります。位取り (数値の小数部分の桁数) は、負の値あるいは精度より 大きな値であってはなりません。最大精度は 31 桁です。10 進列の値は、精度と位取りがすべて同じになります。10 進変数の範囲または 10 進列内の数値の範囲は、-n か ら +n です。n は、該当する精度と 位取りで表すことのできる最大の正数です。最大範囲は 1 - 10³¹ から 10³¹ - 1 までです。

DECFLOAT: 10進浮動小数点で、16桁または34桁の精度を使います。固定小数点のDECIMALとは別です。指数の範囲だけでなく正規/非正規数・特殊値・丸めも対象版の資料で確認します。

REAL: 単精度の2進浮動小数点です。旧z/OS由来の数値範囲をLUWの上限として掲載しません。概数を扱い、10進小数のすべてを正確に保持できるとは限りません。範囲/精度/丸めは対象版の数値制限を確認します。

DOUBLE: 倍精度の2進浮動小数点です。REALと同じ範囲/精度として扱わず、対象版の制限を確認します。DOUBLEへ変えれば金額や長い整数も必ず正確になるという意味ではありません。

 

Datetime

日付、時刻、またはタイム・スタンプを表すデータ値。Datetime データ・タイプの一覧を以下に示します。

DATE: 年、月、日を表す 3 部構成の値を持った日付。

TIME: 時、分、秒を表す 3 部構成の値を持った時刻。

TIMESTAMP: 日付と時刻および小数秒を扱います。LUWの小数秒精度は指定でき、常にマイクロ秒6桁だけではありません。タイムゾーンを格納/変換できるかはDB型・ドライバー・アプリで確認し、日時文字列だけで時点が一意に決まると扱わないでください。

 

型を選ぶときの確認順

  1. 金額等は必要な最大値・小数桁・丸めを決め、DECIMAL(p,s)の整数部p−sと最大精度31を確認する。型が10進でも除算や丸めの業務仕様は別途決める。
  2. CHAR/VARCHARの長さを常に見た目の文字数と扱わない。bytes/コード単位・文字コード・列/行/ページの制限を照合し、日本語や補助文字を含む値で検証する。
  3. 文字列、バイナリー、LOB、XMLを分け、検索/比較/索引/転送サイズ・ドライバーでの取得方法を確認する。BLOBへ何でも入れることを型設計の代替にしない。
  4. DATE/TIME/TIMESTAMP、NULL、既定値を区別する。NULLは空文字や0とは別で、未入力・不明・未確定などの業務上の意味を決める。

既存列の型を確認するSQL

スキーマ名と表名を?へ順にバインドします。返るLENGTH/SCALEの意味は型ごとに確認し、NULLSと現在の定義を照合してください。通常/区切り識別子を区別し、?付きのままCLPへ貼り付けるものではありません。

SELECT TABSCHEMA, TABNAME, COLNO, COLNAME,
       TYPENAME, LENGTH, SCALE, NULLS
FROM SYSCAT.COLUMNS
WHERE TABSCHEMA = ?
  AND TABNAME = ?
ORDER BY COLNO;

表定義の確認、変更が必要なら列変更の前提へ進みます。旧誤置換本文にあったPythonの辞書文字列化とオブジェクト結合はアプリ側の別テーマとして参照を保持し、Db2の型仕様と混ぜません。

公式:LUWの数値/文字列制限 / 演算結果の型 / 日時と小数秒 / XML値と文字列の違い。全型を網羅する一覧ではなく、BOOLEAN/ユーザー定義型等は対象製品/版の資料を確認してください。

対象範囲と関連ページ

対象は主にDb2 LUWで、i/zOSや他製品へ無条件に転用しません。元のDb2版のコード・見出し・リンクを保持して訂正し、誤置換された版も履歴に保持しています。2026年10月に公式資料と照合しましたが、Db2実機での動作/権限/性能・全構成での変更成功を検証したものではありません。Db2親ページの子ページから選択してください。

子ページ

子ページはありません

同階層のページ
  1. DB接続コマンド
  2. データベース一覧の確認
  3. テーブル一覧の確認
  4. テーブル定義の確認
  5. DBの設定確認
  6. テーブルスペースの容量の確認および拡張
  7. データ型
  8. 複数カラムのUPDATE
  9. カラムの追加/削除/変更
  10. 自動番号付け (autoincrement) する方法
  11. インデックスの作成
  12. シーケンスおよびインクリメント(ID列)の違いと確認方法
  13. create table文の生成
  14. 特定スキーマの全テーブルの全カラム情報を取得する方法
  15. 【DB2】エラー一覧
  16. 【DB2】テーブル定義からCREATE TABLE文を生成する方法

最近更新/作成されたページ