文字列型 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() で扱う文字数を超える場合に使用するようです。
文字列の扱い
データベースへのデータは引用符'
または"
で囲むことで文字列として扱われます。
INSERT INTO goods (name) VALUES ('test'); SELECT * FROM goods; .. | 6 | test | NULL | .. INSERT INTO goods (name) VALUES ("test b"); SELECT * FROM goods; .. | 7 | test b | NULL | ..
文字列を表す引用符には'
と"
があります。
エスケープ文字列
文字列にはエスケープ文字列と呼ばれる代替え文字列を必要とするときがあります。
例えば引用符'
の中で'
を使用する場合です。
'今日は'晴れ'です。'
このように引用符'
を文字列として扱いたい時はその直前にエスケープ文字列\
を付加します。
もしもエスケープ文字列\
をエスケープしたい場合は直前にエスケープ文字列\
を付加し\\
とます。
'エスケープ文字列\\をエスケープするには直前にエスケープ文字列\\を付加します。'
MySQL ではエスケープ文字列\
を文字列として取得することが quote() 関数によってできます。web ページ作成で MySQL を使用する場合に便利です。
SELECT quote( '今日は\'晴れ\'です。' ); .. | '今日は\'晴れ\'です。' | .. SELECT quote( '今日は'晴れ'です。' ); .. | 今日は'晴れ'です。 | ..
もしも FROM 句を使用して特定のカラムに quote() 関数を使用する場合は以下のようになります。
SELECT quote( column_a ) FROM table_name;
文字列に関するビルトイン関数
データベースごとに既存の関数、ビルトイン関数が用意されています。ビルトイン関数は単に関数とも呼ばれています。
文字列の結合
2つの文字列を結合するには concat() 関数を使用します。
SELECT concat( '文字列は「 || 」で','結合することができます。');
..
| 文字列は「 || 」で結合することができます。 |
..
PostgreSQL では文字列を結合したい場所に||
を使用することで文字列を繋ぐことができます。
||( PostgreSQL )
SELECT '文字列は「 || 」で' || '結合することができます。';
..
| 文字列は「 || 」で結合することができます。 |
..
文字列数
文字数を数えるには length() 関数が使用できます。
||( PostgreSQL )
SELECT length( 'length() で文字数を数えることができます。' );
..
| 57 |
..
