に最終更新
OVERLAY
説明
OVERLAY 関数は、文字列の指定した位置から指定した長さの部分文字列を新しい文字列に置き換えます。この関数はマルチバイト文字を安全に扱います。
この関数の動作は、MySQL の INSERT 関数 と同じです。
エイリアス
- INSERT
構文
OVERLAY(<str>, <pos>, <len>, <newstr>)
パラメータ
| パラメータ | 説明 |
|---|---|
<str> | 変更する元の文字列。型: VARCHAR |
<pos> | 置換を開始する位置(1 から始まる)。型: INT |
<len> | 置換する文字数。型: INT |
<newstr> | 置換に使用する新しい文字列。型: VARCHAR |
戻り値
置換後の新しい文字列を VARCHAR 型で返します。
特殊なケース:
- いずれかのパラメータが NULL の場合は、NULL を返します
<pos>が 1 未満、または元の文字列の長さを超える場合は、置換せずに元の文字列を返します<len>が 0 未満、または残りの文字数を超える場合は、<pos>から文字列の末尾までを置換します
例
- 基本的な使い方: 中間部分の置換
SELECT overlay('Quadratic', 3, 4, 'What');
+------------------------------------+
| overlay('Quadratic', 3, 4, 'What') |
+------------------------------------+
| QuWhattic |
+------------------------------------+
- 負の長さ: 末尾まで置換
SELECT overlay('Quadratic', 2, -1, 'Hi');
+-----------------------------------+
| overlay('Quadratic', 2, -1, 'Hi') |
+-----------------------------------+
| QHi |
+-----------------------------------+
- 範囲外の位置: 置換しない
SELECT overlay('Hello', 10, 2, 'X');
+-------------------------------+
| overlay('Hello', 10, 2, 'X') |
+-------------------------------+
| Hello |
+-------------------------------+
- NULL 値の扱い
SELECT overlay('Hello', NULL, 2, 'X');
+--------------------------------+
| overlay('Hello', NULL, 2, 'X') |
+--------------------------------+
| NULL |
+--------------------------------+
SELECT INSERT('🎉🎊🎈', 2, 1, '🎁');
+--------------------------------------+
| INSERT('🎉🎊🎈', 2, 1, '🎁') |
+--------------------------------------+
| 🎉🎁🎈 |
+--------------------------------------+