SQL Serverに精通している場合は、T-SQL STUFF()
を使用できることをご存知かもしれません。 文字列内に文字列を挿入する関数。実は、MySQLにも同様の機能がありますが、名前が異なります。
MySQLのINSERT()
関数は、T-SQLのSTUFF()
と基本的に同じことを行います 関数は行います。
いくつかの小さな違い(以下を参照)を除いて、両方の機能はまったく同じように機能します。
構文
これらの各関数の公式構文は次のとおりです。
T-SQL – STUFF()関数
STUFF ( character_expression , start , length , replaceWith_expression )
MySQL – INSERT()関数
INSERT(str,pos,len,newstr)
これらの定義はそれぞれ異なる用語を使用していますが、基本的に同じことを行います。
例
これらの各機能の動作例を次に示します。
T-SQL – STUFF()関数
SELECT STUFF('Cats and dogs', 6, 3, 'like');
結果:
Cats like dogs
MySQL – INSERT()関数
SELECT INSERT('Cats and dogs', 6, 3, 'like');
結果:
Cats like dogs
ご覧のとおり、唯一の違いは関数名です。関数の名前を変更するだけで、一方を他方に移植できます。
STUFF()とINSERT()の違い
これらの関数の動作にはいくつかの違いがあります。特に、2つの主な違いは、それらの処理方法です。
- 範囲外の位置
- NULL値
これらの違いについては、以下で説明します。
範囲外の位置
元の文字列の長さの外側の位置に挿入しようとすると、MySQLのINSERT()
関数は元の文字列を返します。一方、T-SQLのSTUFF()
関数はNULL
を返します 。
T-SQL – STUFF()関数
SELECT STUFF('Cats and dogs', 20, 4, 'rabbits');
結果:
NULL
MySQL – INSERT()関数
SELECT INSERT('Cats and dogs', 20, 4, 'rabbits');
結果:
Cats and dogs
NULL値
これらの2つの関数は、挿入しようとするNULL値の処理方法も異なります。
T-SQL – STUFF()関数
SELECT STUFF('Cats and dogs', 6, 3, NULL);
結果:
Cats dogs
T-SQL – INSERT()関数
SELECT INSERT('Cats and dogs', 6, 3, NULL);
結果:
NULL