テキスト型 てきすとがた
簡単に言うとこんな感じ!
テキスト型は「文字を入れておく引き出し」だよ!数字や日付じゃなく、名前・住所・コメントみたいな「文章や言葉」を保存するためのデータ型なんだ。「数字の1」と「文字の1」は全然別モノ扱いになるのがポイント!
テキスト型とは
テキスト型(文字列型) とは、データベースやプログラミング言語において「文字や文章を格納するためのデータ型」のことです。人名・住所・商品説明・メールアドレスなど、計算に使わない情報を扱うときに使います。
数値型(整数・小数)や日付型と並ぶ、最も基本的なデータ型のひとつです。一口にテキスト型といっても、最大文字数の上限や固定長か可変長かによってさらに細かく種類が分かれており、用途に合わせて使い分けることがシステム設計の要になります。
実務では「このフォームの入力欄のデータをDBにどう持つか」という場面で必ず登場します。適切な型を選ばないと、ストレージの無駄遣いや検索速度の低下、文字化けといったトラブルに直結するため、発注・設計の段階でエンジニアと確認しておきたいポイントです。
テキスト型の種類と使い分け
データベース(SQL)でよく登場するテキスト型を整理します。
| 型名 | 特徴 | 最大長の目安 | 主な用途 |
|---|---|---|---|
CHAR(n) | 固定長。nに満たない場合はスペース埋め | 〜255文字 | 郵便番号・国コードなど長さが決まっているもの |
VARCHAR(n) | 可変長。実際の長さ分だけ保存 | 〜65,535バイト | 氏名・メールアドレス・タイトルなど |
TEXT | 非常に長い文章を保存できる大容量型 | 〜65,535バイト | 本文・コメント・ログなど |
MEDIUMTEXT | TEXTより大きい | 〜16MByte | 長文記事・設定ファイルなど |
LONGTEXT | 最大級のテキスト | 〜4GByte | 大量ログ・丸ごとHTMLなど |
覚え方:「CHAR は定員固定の席、VARCHAR は来た人数分だけ椅子を用意」
CHAR(10) は「常に10席用意する」イメージ。3文字しか入れなくても7席分のスペースが消費されます。VARCHAR(10) は「最大10席まで対応できるけど、来た人数分だけ用意する」イメージです。
固定長 vs 可変長の比較
CHAR(10) に "ABC" を保存:
[ A ][ B ][ C ][ ][ ][ ][ ][ ][ ][ ]
└─ 常に10文字分のスペースを消費 ─────────────────┘
VARCHAR(10) に "ABC" を保存:
[ A ][ B ][ C ]
└─ 3文字分だけ消費 ┘
歴史と背景
- 1960年代 — COBOL などの初期言語でも「英数字項目」として文字列の概念が登場。固定長が主流だった
- 1970年代 — E.F.コッドがリレーショナルデータベース理論を提唱。テーブルのカラムに型を持つ設計が広まる
- 1980年代 — SQL標準(ANSI SQL)が策定され、
CHARとVARCHARが正式に定義される - 1990年代 — インターネット普及でメール・Web掲示板など長文データが急増。
TEXT型の重要性が増す - 2000年代 — Unicode(UTF-8) の普及により、日本語・中国語・絵文字まで1つのエンコードで扱えるようになる。文字コード問題が大きな設計課題に
- 2010年代〜 — NoSQLやJSONカラムの登場で、テキスト型に構造化データを詰め込むケースも増加。型の境界が柔軟になってきた
テキスト型にまつわる重要な概念
文字コードとエンコーディング
テキスト型を語るうえで外せないのが 文字コード(エンコーディング) です。コンピュータは文字を数値として保存するため、「どの数値がどの文字に対応するか」の変換表が必要です。
| 文字コード | 特徴 | 注意点 |
|---|---|---|
| UTF-8 | 現在の世界標準。英数字は1バイト、日本語は3バイト | ほぼこれ一択でOK |
| Shift-JIS | 日本語Windows環境で長く使われた | 古いシステムとの連携時に文字化けの元 |
| EUC-JP | 旧来のUnix/Linux環境で普及 | 現在はほぼ見かけない |
| latin1 | MySQLのデフォルト設定が長い間これだった | 絵文字が保存できない落とし穴あり |
テキスト型と数値型の違い
「電話番号」や「郵便番号」は数字だけで構成されますが、テキスト型で保存するのが正解です。
❌ 数値型で保存した場合:
電話番号 "090-1234-5678" → ハイフンが保存できない
郵便番号 "0120-xxx-xxx" → 先頭の0が消える(数値は先頭の0を省略する)
✅ テキスト型で保存した場合:
"090-1234-5678" → そのまま保存OK
"012-3456" → 先頭の0もハイフンも保存OK
SQLとプログラミング言語での対応関係
SQLはデータベースの都合上、細かく型を使い分けますが、PythonやJavaScriptなどのアプリ側の言語では「文字列は全部 str / string のひとつ」で済むのが特徴です。
関連する規格・RFC
| 規格番号 | 内容 |
|---|---|
| ISO/IEC 9075 | SQL標準規格。CHAR・VARCHAR・CHARACTER VARYING などテキスト型の定義を含む |
| RFC 3629 | UTF-8エンコーディングの仕様。テキストデータの文字コード標準として広く参照される |