今回のテーマ「CHARとVARCHAR2の違い」をみていこう。みんなは、テーブル定義を作成する時や、運用支援業務でSQL文を調査しているときに、文字列を格納する項目にCHAR型、VARCHAR2型のどちらのデータ型を使えば良いのでしょうと悩んだ経験はないでしょうか。この記事では、CHAR型とVARCHAR2型の違いや使い分けについて、SE歴11年の久保田みくと一緒に解説していきます。

ライター/久保田みく

システムエンジニア歴11年、2児の母です。新しい知識を学ぶことが大好きなので、ITはもちろん、それ以外の分野についても分かりやすく解説します。得意分野は、IT、食生活、美容、気象学、育児です。

CHARとVARCHAR2の違いとは?

image by iStockphoto

データ型とはデータの種類のことです。文字型、数値型など複数存在します。CAHR型、VARCHAR2型は、OracleDBで文字列データを格納するときに使用するデータ型です。まずはそれらの違いについて、3つピックアップして説明します。

1.格納されるデータサイズ

CHARとVARCHAR2の一番の違いは、CHARが固定長のデータ型VARCHAR2が可変長のデータ型であるという点。

固定長というのは、格納するデータサイズにかかわらず、表作成時に定義したサイズで一定ということです。例えばCHAR(5)が定義された列に「abc」という3バイトを格納する場合、固定長だと後ろに2バイトの空白が追加されて「abc  」という5バイトのデータが格納されます。

一方、可変長というのは、格納するデータのサイズに応じてサイズが変わるということです。例えばVARCHAR2(5)が定義された列に「abc」という3バイトを格納する場合、「abc」という3バイトのデータが格納されます。

2.定義可能なバイト数

CHAR型とVARCHAR2型では列に定義可能な最大のバイト数が異なります。CAHR型は2000バイトVARCHAR2型は4000バイトです。

3.バイト数定義の省略

CHAR型はバイト数の指定を省略することが可能です。省略した場合、1が設定されます。一方、VARCHAR2型はバイト数の指定を省略することができません。省略した場合、エラーが表示されます。

\次のページで「CHARとVARCHAR2を使用するメリットとデメリット」を解説!/

CHARとVARCHAR2を使用するメリットとデメリット

image by iStockphoto

データ更新とディスク容量の観点から、CHARとVARCHAR2のメリットとデメリットを説明します。

データ更新時

データ更新時、VARCHAR2はCHARを使う場合よりもシステムのパフォーマンス低下の可能性が高くなるという特徴があります。

VARCHAR2は、格納されているデータのバイト数だけの容量が確保されているので、更新前よりも更新後のバイト数が大きくなった場合、増加した分のデータを格納する場所を探すためにディスクI/Oが増加することがあるためです。対してCHARは、固定長文字列のため、パフォーマンスへの影響は少なくなります。

ディスク容量

VARCHAR2型のメリットは、ディスク容量を無駄に使用しないことです。格納するデータのバイト数だけディスク容量を確保するため、余分な領域が発生しません。対してCHAR型は、定義した最大サイズに満たなくても空白が追加されるため、VARCHAR2型よりもディスク容量を圧迫しやすくなるというデメリットがあります。

CHARとVARCHAR2の使い分け

image by iStockphoto

それぞれのメリットとデメリットを考えると、CHARとVARCHAR2の使い分け方法は以下です。

CHAR型を使用するデータの特徴
 ・文字数にばらつきが少ないデータ
 ・データの更新頻度が高いデータ

\次のページで「CHARとVARCHAR2を使用する際の注意点とは?」を解説!/

VARCHAR2を使用するデータの特徴
 ・参照がメインとなるデータ(参照フラグなど)
 ・データの更新頻度が低いデータ

CHARとVARCHAR2を使用する際の注意点とは?

image by iStockphoto

文字列の長さと文字列の比較の観点から、CHARとVARCHAR2を使用する場合の注意点を説明します。

文字列の長さについて

同じ文字列でも型が異なると、文字列の長さが同じと判定されない場合があります。例えば、「abc」という文字列の場合、5バイトのCHAR型では、文字列の長さは5ですが、5バイトのVARCHAR2型の場合は文字列の長さが3になるのです。

文字列の比較について

同じ文字列でも、CHAR型とVARCHAR2型のように型が異なる文字列を比較する場合は、文字列の長さが異なることに注意が必要です。考慮がもれると想定外のロジックになる可能性があります。対策としては、TRIM関数を利用して空白を除去した状態での比較がおすすめの方法です。

\次のページで「CAHRは固定長のデータ型、VARCHAR2は可変長のデータ型」を解説!/

CAHRは固定長のデータ型、VARCHAR2は可変長のデータ型

今回は、CAHRとVARCHAR2の違いについて解説しました。どちらも文字データを格納するデータ型ですが、それぞれ特性があることが分かっていただけたかと思います。データ型の使い方次第で、システムのパフォーマンスがぐっとよくなりますので、開発する際には上手に使い分けを行い、データベースの設計やコーディングを行ってみてください。

" /> CHARとVARCHAR2の違いとは?使い分けや文字列の注意点もSEがわかりやすく解説 – Study-Z
IT・プログラミング

CHARとVARCHAR2の違いとは?使い分けや文字列の注意点もSEがわかりやすく解説

今回のテーマ「CHARとVARCHAR2の違い」をみていこう。みんなは、テーブル定義を作成する時や、運用支援業務でSQL文を調査しているときに、文字列を格納する項目にCHAR型、VARCHAR2型のどちらのデータ型を使えば良いのでしょうと悩んだ経験はないでしょうか。この記事では、CHAR型とVARCHAR2型の違いや使い分けについて、SE歴11年の久保田みくと一緒に解説していきます。

ライター/久保田みく

システムエンジニア歴11年、2児の母です。新しい知識を学ぶことが大好きなので、ITはもちろん、それ以外の分野についても分かりやすく解説します。得意分野は、IT、食生活、美容、気象学、育児です。

CHARとVARCHAR2の違いとは?

image by iStockphoto

データ型とはデータの種類のことです。文字型、数値型など複数存在します。CAHR型、VARCHAR2型は、OracleDBで文字列データを格納するときに使用するデータ型です。まずはそれらの違いについて、3つピックアップして説明します。

1.格納されるデータサイズ

CHARとVARCHAR2の一番の違いは、CHARが固定長のデータ型VARCHAR2が可変長のデータ型であるという点。

固定長というのは、格納するデータサイズにかかわらず、表作成時に定義したサイズで一定ということです。例えばCHAR(5)が定義された列に「abc」という3バイトを格納する場合、固定長だと後ろに2バイトの空白が追加されて「abc  」という5バイトのデータが格納されます。

一方、可変長というのは、格納するデータのサイズに応じてサイズが変わるということです。例えばVARCHAR2(5)が定義された列に「abc」という3バイトを格納する場合、「abc」という3バイトのデータが格納されます。

2.定義可能なバイト数

CHAR型とVARCHAR2型では列に定義可能な最大のバイト数が異なります。CAHR型は2000バイトVARCHAR2型は4000バイトです。

3.バイト数定義の省略

CHAR型はバイト数の指定を省略することが可能です。省略した場合、1が設定されます。一方、VARCHAR2型はバイト数の指定を省略することができません。省略した場合、エラーが表示されます。

\次のページで「CHARとVARCHAR2を使用するメリットとデメリット」を解説!/

次のページを読む
1 2 3 4
Share: