メインコンテンツまでスキップ
バージョン: 26.x

OVERLAY

説明

OVERLAY関数は、文字列内の指定された位置と長さの部分文字列を置換するために使用されます。指定された位置から開始して、指定された長さの文字を新しい文字列で置き換えます。この関数はマルチバイトセーフです。

この関数は、MySQLのINSERT functionと一貫した動作をします。

エイリアス

  • INSERT

構文

OVERLAY(<str>, <pos>, <len>, <newstr>)

パラメータ

Parameterデスクリプション
<str>変更される元の文字列。型: VARCHAR
<pos>置換の開始位置(1ベース)。型: INT
<len>置換する文字数。型: INT
<newstr>置換に使用する新しい文字列。型: VARCHAR

戻り値

VARCHAR型を返す、置換後の新しい文字列。

特殊な場合:

  • いずれかのパラメータがNULLの場合、NULLを返す
  • <pos>が1未満または文字列長を超える場合、置換は行われず元の文字列を返す
  • <len>が0未満または残りの長さを超える場合、<pos>から文字列の末尾まで置換する

  1. 基本的な使用法: 中間部分の置換
SELECT overlay('Quadratic', 3, 4, 'What');
+------------------------------------+
| overlay('Quadratic', 3, 4, 'What') |
+------------------------------------+
| QuWhattic |
+------------------------------------+
  1. 負の長さ: 末尾まで置換
SELECT overlay('Quadratic', 2, -1, 'Hi');
+-----------------------------------+
| overlay('Quadratic', 2, -1, 'Hi') |
+-----------------------------------+
| QHi |
+-----------------------------------+
  1. 範囲外の位置: 置換なし
SELECT overlay('Hello', 10, 2, 'X');
+-------------------------------+
| overlay('Hello', 10, 2, 'X') |
+-------------------------------+
| Hello |
+-------------------------------+
  1. NULL値の処理
SELECT overlay('Hello', NULL, 2, 'X');
+--------------------------------+
| overlay('Hello', NULL, 2, 'X') |
+--------------------------------+
| NULL |
+--------------------------------+
SELECT INSERT('🎉🎊🎈', 2, 1, '🎁');
+--------------------------------------+
| INSERT('🎉🎊🎈', 2, 1, '🎁') |
+--------------------------------------+
| 🎉🎁🎈 |
+--------------------------------------+