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

MySQL REPLACE()–サブストリングのすべてのインスタンスを別のストリングに置き換えます

    MySQLのREPLACE() 関数を使用すると、部分文字列のすべての出現箇所を別の文字列に置き換えることができます。これにより、ある単語のすべての出現箇所を別の単語に置き換えるなどのことができます。

    この記事では、その使用法を示します。

    構文

    構文は次のとおりです。

    REPLACE(str,from_str,to_str)

    str 部分文字列を含む文字列です。 from_str 別の文字列に置き換えるサブ文字列です。そしてto_str 古い文字列を置き換える新しい文字列です。

    基本的な例は次のとおりです。

    SELECT REPLACE('Cats and dogs and cats and rabbits', 'and', 'or') AS Result;

    結果:

    +---------------------------------+
    | Result                          |
    +---------------------------------+
    | Cats or dogs or cats or rabbits |
    +---------------------------------+

    この場合、andという単語を入れ替えるだけです。 orという単語で 。その単語が3回出現したため、3つすべてが置き換えられました。

    ケースセンシティブ

    REPLACE()を覚えておくことが重要です 関数では大文字と小文字が区別されます。

    例:

    SELECT REPLACE('Cats and dogs and cats and rabbits', 'cat', 'flea') AS Result;

    結果:

    +-------------------------------------+
    | Result                              |
    +-------------------------------------+
    | Cats and dogs and fleas and rabbits |
    +-------------------------------------+
    >

    この場合、catのインスタンスは1つだけです。 1つのインスタンスだけが正しいケースを持っていたため、置き換えられました。最初のインスタンスには大文字のCがありました 一致しませんでした。

    部分文字列を削除する

    サブストリングを空のストリング('')に置き換えるだけで、サブストリングを完全に削除することもできます。 ):

    SELECT REPLACE('http://www.database.guide', 'www.', '') AS Result;

    結果:

    +-----------------------+
    | Result                |
    +-----------------------+
    | http://database.guide |
    +-----------------------+

    セーフガード

    これを行う別の(おそらくより安全な)方法は、周囲のテキストの一部を含めてから、不要な部分を削除することです。

    SELECT REPLACE('http://www.database.guide', 'http://www.', 'http://') AS Result;

    結果:

    +-----------------------+
    | Result                |
    +-----------------------+
    | http://database.guide |
    +-----------------------+

    これにより、削除してはならない部分文字列を誤って削除することを防ぎます。たとえば、http://bestwww.comのようなURLがある場合 、誤ってhttp://bestcomに変わる可能性があります セーフガードなし。

    テキストを(単に削除するだけでなく)置き換える場合にも、同じセーフガードを適用できます。例:

    SELECT REPLACE('Land of cats and dogs and sand', ' and ', ' or ') AS Result;

    結果:

    +------------------------------+
    | Result                       |
    +------------------------------+
    | Land of cats or dogs or sand |
    +------------------------------+

    この場合、部分文字列とその置換テキストの前後にスペースを追加しました。

    これをしていなかったら、結局これになっていたでしょう:

    SELECT REPLACE('Land of cats and dogs and sand', ' and ', ' or ') AS Result;

    結果:

    +----------------------------+
    | Result                     |
    +----------------------------+
    | Lor of cats or dogs or sor |
    +----------------------------+


    1. SQLで同じIDを持つ多くの行を連結するにはどうすればよいですか?

    2. プロバイダー名前付きパイププロバイダーエラー40は、SQLServerエラー2への接続を開くことができませんでした

    3. 2019オープンソースデータベースレポート:トップデータベース、パブリッククラウドとオンプレミス、ポリグロットの永続性

    4. JSON_ARRAYAGG()–MySQLのクエリの行からJSON配列を作成します