文字列型 CHAR、VARCHAR、TEXT
文字列型に使用するタイプには主に CHAR() または VARCHAR()、TEXT があります。
- CHAR()
- CHAR() タイプは固定長で文字数が限られた場合に指定します。指定数に満たない文字数は空白に置き換わります。指定数を超えるとエラーになります。
- VARCHAR()
- VARCHAR() タイプは可変長で文字数が限られた場合に指定します。
- TEXT
- TEXT タイプは文字数が限られていないかつ上記の CHAR や VARCHAR の最大文字数を超える場合に使用します。
データベースによって仕様が異なりますのでそれぞれのデータベースの文字列型を参照してください。
文字列の扱いについてや文字列の関数についても解説してます。
MySQL や PostgreSQL といったデータベースによって文字列型の仕様が異なり、他のデータタイプがあります。
ページ内 Index
文字列型について
主な文字列型には CHAR()、VARCHAR()、TEXT があります。
以下は CHAR()、VARCHAR()、TEXT についてです。MySQL と PostgreSQL での違いが追記してあります。
- CHAR()
- 固定長。CHAR() タイプは文字数が限られた場合に指定します。指定数に満たない文字数は空白に置き換わります。指定数を超えるとエラーになります。
MySQLでは 255 文字までです。
PostgreSQLでは 10,485,760 文字までです。 - VARCHAR()
- 可変長。VARCHAR() タイプは文字数が限られた場合に指定します。
MySQL では可変長で最大 65,535 文字まで受け付けますが、指定数を超える分は切り捨てられます。指定数を超えても入力エラーは出ませんが超えた文字列は切り捨てられます。
PostgreSQL 10,485,760 文字までです。入力文字数に合わせて保存領域が変わります。PostgreSQL では入力文字数が指定数を超えるとエラーになります。 - TEXT
- TEXT タイプは文字数が限られていないかつ上記の CHAR や VARCHAR の最大文字数を超える場合に使用します。
MySQL では 4 GB分の文字列を保存が可能。
PostgreSQL では 1 GB分の文字列を保存が可能です。
多くの場合は VARCHAR() を使用することを推奨しています。TEXT は文字数が決まっていない、かつ VARCHAR() で扱う文字数を超える場合に使用するようです。
文字列の扱い
データベースへのデータは引用符'
または"
で囲むことで文字列として扱われます。
文字列を表す引用符には'
と"
があります。
エスケープ文字列
文字列にはエスケープ文字列と呼ばれる代替え文字列を必要とするときがあります。
例えば引用符'
の中で'
を使用する場合です。
このように引用符'
を文字列として扱いたい時はその直前にエスケープ文字列\
を付加します。
もしもエスケープ文字列\
をエスケープしたい場合は直前にエスケープ文字列\
を付加し\\
とます。
MySQL ではエスケープ文字列\
を文字列として取得することが quote() 関数によってできます。web ページ作成で MySQL を使用する場合に便利です。
もしも FROM 句を使用して特定のカラムに quote() 関数を使用する場合は以下のようになります。
文字列に関するビルトイン関数
データベースごとに既存の関数、ビルトイン関数が用意されています。ビルトイン関数は単に関数とも呼ばれています。
文字列の結合
2つの文字列を結合するには concat() 関数を使用します。
PostgreSQL では文字列を結合したい場所に||
を使用することで文字列を繋ぐことができます。
文字列数
文字数を数えるには length() 関数が使用できます。