sql >> データベース >  >> RDS >> Mysql

SQL ServerのSTUFF()に相当するMySQLは何ですか?

    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

    1. 新しい列を追加した後にactiveandroidでテーブルを更新する方法

    2. JDBCを使用してOracleClobを更新する方法

    3. CentOS7での一般的なPostgresタスク

    4. DBA-SQLServer上のすべてのデータベースプロセスを強制終了する方法