メインコンテンツへスキップ

VillageSQL is a drop-in replacement for MySQL with extensions.

All examples on this page work on VillageSQL. Install Now →
MySQL の文字列関数は、テキストの分割、結合、検索、整形、および比較をカバーします。ほとんどは同じ規則に従います。1 始まりのインデックス、NULL の伝播(いずれかの引数が NULL なら NULL を返す)、およびデフォルトでの大文字小文字を区別しない比較です。

結合と分割

CONCAT — 文字列を連結します。
CONCAT は引数に NULL があると NULL を返します。CONCAT_WS は NULL 値をスキップしますが、NULL でない値の間の区切り文字は保持します。 SUBSTRING / SUBSTR / MID — 文字列の一部を取り出します。
SUBSTRING_INDEX — 区切り文字で分割します。

文字列内の検索

LOCATE / POSITION / INSTR — 部分文字列を探します。
LIKE — ワイルドカードによるパターン一致です。
REGEXP / RLIKE — 正規表現による一致です。
REGEXP は POSIX 正規表現の構文を使います。関数形式には REGEXP_LIKE()(MySQL 8.0 以降)を使ってください。

文字列の変更

REPLACE — 部分文字列のすべての出現を置き換えます。
TRIM / LTRIM / RTRIM — 空白または特定の文字を取り除きます。
UPPER / LOWER — 大文字と小文字を変換します。
LPAD / RPAD — 固定長までパディングします。
REPEAT — 文字列を N 回繰り返します。
REVERSE — 文字列を反転します。

長さと比較

MySQL には 2 つの長さ関数があり、マルチバイト文字に対して異なる結果を返します。
バイト数ではなく文字数が重要な場合は、常に CHAR_LENGTH を使ってください。 STRCMP — 2 つの文字列を比較し、-1、0、または 1 を返します。

整形

FORMAT — 数値を桁区切り付きで整形します。
LEFT / RIGHT — 先頭または末尾から N 文字を取り出します。

よく使うパターン

メールアドレスからドメインを取り出します。
表示用に長い文字列を切り詰めます。
空白を正規化します。

よくある質問

MySQL の文字列比較は大文字と小文字を区別しますか?

デフォルトでは区別しません。文字列比較は列の照合順序を使い、一般的な照合順序のほとんどは大文字と小文字を区別しません(例: utf8mb4_general_ci。ci は case-insensitive の意味です)。大文字と小文字を区別する比較には、_cs の照合順序または BINARY 演算子を使います。

CHAR_LENGTH と LENGTH の違いは何ですか?

LENGTH はバイト数を返し、CHAR_LENGTH は文字数を返します。ASCII 文字列では同じです。マルチバイト文字(アクセント付き文字、絵文字、CJK)を含む UTF-8 文字列では異なります。ユーザーに見える文字列長の制限には CHAR_LENGTH を使ってください。

トラブルシューティング

関連項目