MySQL `SUBSTRING()`関数を理解する
Takashi Yamamoto
Infrastructure Engineer · Leapcell

Key Takeaways
SUBSTRING()
関数は、位置と長さに基づいて文字列の一部を抽出します。- 柔軟な抽出のために、正と負の両方の開始位置をサポートします。
- データクレンジング、テキスト解析、および省略形の生成に役立ちます。
MySQLのSUBSTRING()
関数は、文字列の特定の部分を抽出するための強力なツールです。これは、出力のフォーマット、構造化されたテキストの解析、またはデータフィールドのクリーンアップなど、データ処理タスクで一般的に使用されます。
構文
MySQLは、SUBSTRING()
関数に対して2つの構文を提供します。
SUBSTRING(string, start, length)
または
SUBSTRING(string FROM start FOR length)
string
: 抽出元のソース文字列。start
: 抽出の開始位置。正の値は先頭から(1から始まるインデックスで)カウントされ、負の値は末尾からカウントされます。length
(オプション): 抽出する文字数。省略した場合、関数は開始位置から文字列の末尾までの部分文字列を返します。
主要な動作
- 1から始まるインデックス: 位置は1から始まります。たとえば、位置1は最初の文字を指します。
- 負の開始値: 負の
start
値は、文字列の末尾からカウントします。たとえば、-1
は最後の文字を指します。 - Lengthパラメータ: 指定された
length
がstart
位置からの残りの文字数を超える場合、関数はエラーなしにstart
位置から文字列の末尾までの部分文字列を返します。 - ゼロの開始値:
start
値に0を指定すると、空の文字列が返されます。 - NULLの処理:
string
がNULL
の場合、関数はNULL
を返します。
実用的な例
1. 特定の位置からの部分文字列の抽出
SELECT SUBSTRING('Hello, World!', 8);
結果: 'World!'
これは、8番目の文字から文字列の末尾までの部分文字列を抽出します。
2. 特定の長さの部分文字列の抽出
SELECT SUBSTRING('Database Management', 10, 6);
結果: 'Manage'
これは、10番目の文字から始まる6文字を抽出します。
3. 負の開始値の使用
SELECT SUBSTRING('Hello, World!', -6);
結果: 'World!'
これは、文字列の最後の6文字を抽出します。
4. テーブル列からの抽出
customers
テーブルにcustomer_name
列があると仮定します。
SELECT SUBSTRING(customer_name, 1, 5) AS short_name FROM customers;
これにより、各顧客の名前の最初の5文字が取得されます。これは、略語またはコードを作成するのに役立ちます。
5. FROM
およびFOR
構文を使用した抽出
SELECT SUBSTRING('Learning SQL' FROM 10 FOR 3);
結果: 'SQL'
この代替構文は、標準構文と同じ結果を実現します。
一般的なユースケース
- データクレンジング: 文字列から不要なプレフィックスまたはサフィックスを削除します。
- 構造化データの解析: 既知の形式の文字列から特定のフィールドを抽出します。
- 略語の生成: 名前またはタイトルから短いコードまたはイニシャルを作成します。
- テキストの分析: 分析のために、より大きなテキストフィールドから意味のあるセグメントを抽出します。
ベストプラクティス
- 入力の検証:
start
およびlength
パラメータが、予期しない結果を避けるために文字列の範囲内にあることを確認します。 - NULLの処理: データ内の
NULL
値に備え、IFNULL()
などの関数を使用して、それらを適切に管理します。 - 他の関数との組み合わせ: より動的な部分文字列の抽出のために、
SUBSTRING()
をLOCATE()
やCHAR_LENGTH()
などの関数と組み合わせて使用します。 - パフォーマンスに関する考慮事項: 大規模なデータセットを扱う場合は、文字列操作関数のパフォーマンスへの影響に注意してください。
関連関数
SUBSTR()
およびMID()
:SUBSTRING()
の同義語です。これらは同じように機能します。SUBSTRING_INDEX()
: 区切り文字の指定された出現回数の前の文字列から部分文字列を抽出します。LEFT()
およびRIGHT()
: 文字列の先頭または末尾から指定された数の文字をそれぞれ抽出します。REGEXP_SUBSTR()
: 正規表現パターンに一致する部分文字列を抽出します。
SUBSTRING()
関数を理解し、効果的に活用することで、MySQLクエリ内で正確かつ効率的な文字列操作を実行し、データ処理能力を高めることができます。
FAQs
はい、負の開始値は文字列の末尾からカウントされます。
空の文字列が返されます。
いいえ、それらは機能的に同一であり、同じように使用できます。
バックエンドプロジェクトのホスティングには、Leapcellをご利用ください。
Leapcellは、Webホスティング、非同期タスク、およびRedisのための次世代サーバーレスプラットフォームです。
多言語サポート
- Node.js、Python、Go、または Rust で開発します。
無制限のプロジェクトを無料でデプロイ
- 使用量に応じた支払い - リクエスト、チャージは一切なし。
比類なき費用対効果
- アイドルチャージなしの従量課金制。
- 例: 25ドルで平均応答時間60msで694万件のリクエストをサポートします。
合理化された開発者体験
- 簡単なセットアップのための直感的なUI。
- 完全に自動化されたCI/CDパイプラインとGitOps統合。
- 実用的な洞察のためのリアルタイムのメトリクスとロギング。
容易なスケーラビリティとハイパフォーマンス
- 高い同時実行性を容易に処理するための自動スケーリング。
- 運用上のオーバーヘッドはゼロ - 構築に集中するだけです。
詳細については、ドキュメントをご覧ください!
Xでフォローしてください: @LeapcellHQ