ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|---|
|
MySQL/MariaDB の REPLACE() 関数は、ある文字列の中に含まれる特定の部分文字列を、別の文字列へ一括で置き換えて返す文字列関数である。引数は REPLACE(対象, 検索, 置換後) の3つで、対象の中に検索文字列が出現するすべての箇所が置換後の文字列に変わる。
基本構文と動作
構文は次のとおり。引数はすべて文字列式である。
|
REPLACE(str, from_str, to_str) |
動作を確認するには、テーブルを使わずに SELECT でそのまま試すのが手軽である。
|
SELECT REPLACE('2026-06-12', '-', '/'); -- 結果: 2026/06/12 |
検索文字列が複数回現れる場合は、そのすべてが置換される。出現しなければ、元の文字列がそのまま返る。
|
SELECT REPLACE('a-b-c-d', '-', '_'); -- 結果: a_b_c_d(3か所すべて置換) |
置換後の文字列に空文字 '' を指定すると、検索文字列を取り除く(削除する)用途にも使える。
|
SELECT REPLACE('090-1234-5678', '-', ''); -- 結果: 09012345678(ハイフン除去) |
UPDATE で列の値を一括置換する
テーブルに保存済みのデータをまとめて書き換えるには、UPDATE 文の SET 句で REPLACE() を使う。たとえば url 列に含まれる http:// をすべて https:// に変えるには次のようにする。
|
UPDATE pages SET url = REPLACE(url, 'http://', 'https://') WHERE url LIKE 'http://%'; |
ポイントは SET url = REPLACE(url, ...) のように列自身を第1引数に渡すこと。これで「いまの値を置換した結果」で同じ列を上書きする。WHERE 句は必須ではないが、対象行を絞ることで無駄な更新を避けられる(検索文字列を含まない行は REPLACE() しても値が変わらないため、付けなくても結果は同じだが、更新行数を抑えられる)。
大文字小文字の区別に注意
第2引数(検索文字列)の照合は、バイト単位での比較となり大文字小文字を区別する。つまり 'ABC' を検索しても 'abc' はヒットしない。
|
SELECT REPLACE('Apple apple', 'apple', 'orange'); -- 結果: Apple orange(先頭の Apple は置換されない) |
これは列の照合順序(collation)が大文字小文字を区別しない(_ci)設定であっても変わらない。WHERE 句の LIKE 比較とは挙動が異なる点に注意したい。大文字小文字をまとめて置換したい場合は、REGEXP_REPLACE() の i オプション(後述)などを検討する。
REPLACE() 関数と REPLACE INTO 文は別物
| 混同しやすい落とし穴 |
|---|
同じ「REPLACE」という名前だが、文字列関数の REPLACE() と SQL文の REPLACE INTO はまったくの別機能である。後者は INSERT に似た構文で、主キー(または一意キー)が重複する行があれば既存行を削除してから挿入し直す文であり、文字列の置換とは無関係。検索して見つけたサンプルがどちらの話か取り違えないよう注意する。 |
|
-- 文字列の一部を置き換える(文字列関数) SELECT REPLACE('foo', 'o', '0');
-- 行ごと挿入し直す(SQL文・置換とは無関係) REPLACE INTO users (id, name) VALUES (1, 'Sato'); |
REGEXP_REPLACE() との違い
REPLACE() は固定文字列のみを対象とする単純置換であり、「数字だけ」「空白の連続」といったパターン指定はできない。正規表現で柔軟に置換したい場合は REGEXP_REPLACE() を使う。ただし利用できるバージョンが限られる(2026年時点では一般に利用可能)。
| 項目 | REPLACE() | REGEXP_REPLACE() |
|---|---|---|
| 検索対象 | 固定の部分文字列 | 正規表現パターン |
| 大文字小文字 | 常に区別する | オプションで制御可(i など) |
| 利用可能バージョン | すべての版で利用可 | MySQL 8.0以降/MariaDB 10.0.5以降 |
| 単純な置き換え | こちらが簡潔・高速 | 過剰 |
| パターン置換 | 不可 | こちらを使う |
|
-- 連続する空白を1つにまとめる(正規表現が必要な例) SELECT REGEXP_REPLACE('a b', ' +', ' '); -- 結果: a b |
よくある質問
Q. 置換対象が NULL のときはどうなりますか?
A. REPLACE() はいずれかの引数が NULL の場合、結果も NULL を返す。たとえば REPLACE(NULL, 'a', 'b') は NULL になる。UPDATE で NULL の行を残したくない場合は WHERE 列 IS NOT NULL を併用するか、IFNULL() などで補う。
Q. 1回の REPLACE() で複数種類の文字を置き換えられますか?
A. 1回の呼び出しでは1種類の検索文字列しか扱えない。複数種類を置き換えたいときは REPLACE() を入れ子(ネスト)にする。たとえば REPLACE(REPLACE(col, 'a', 'x'), 'b', 'y') のように内側から順に適用される。
Q. 置換できたか件数を確認したいです。
A. UPDATE 実行後にクライアントが返す影響行数(affected rows)で更新された行の数がわかる。ただし、置換前後で値が同じだった行はカウントに含まれないことがある。事前確認したい場合は、同じ条件で SELECT REPLACE(col, '旧', '新') FROM 表 WHERE ... を実行して結果を見てから UPDATE するとよい。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- 現在日時の取得
- replaceによる文字列置換
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?