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

MySQLで文字列の一部を置き換える方法

    問題:

    MySQLで文字列の一部を別の文字列に置き換えたい。

    例:

    私たちのデータベースには、motorbike_sale idのデータ 、name 、およびpart_number 列。

    id 名前 part_number
    1 ハーレーダビッドソンx 1245-AC2-25
    2 ホンダCB750-x 012-GK8-A8
    3 鈴木隼X 798-25-28

    すべてのハイフン文字をスラッシュに置き換えて、バイクの部品番号を変更したいと思います。

    ソリューション1:

    SELECT name,
      REPLACE( part_number, '-', '/' ) as new_part_number
    FROM motorbike_sale;
    

    このクエリは、バイクの名前と新しい部品番号のリストを返します。部品番号のハイフンを置き換えたスラッシュに注意してください:

    name new_ part_number
    ハーレーダビッドソンx 1245 / AC2 / 25
    ホンダCB750-x 012 / GK8 / A8
    鈴木隼X 798/25/28

    ディスカッション:

    MySQL REPLACE()関数を使用して、部分文字列(つまり、単語、文字など)を別の部分文字列に置き換え、変更された文字列を返します。この関数は3つの引数を取ります:

    • 変更する文字列。 (この例では、part_number列です。 。)
    • 置き換える部分文字列(つまり、文字「-」)。
    • 挿入する部分文字列(つまり、文字「/」)。

    この関数がすべてに置き換わることに注意してください 指定された文字列または列での部分文字列の出現。この例では、各 part_number 3つのハイフン文字が含まれ、それぞれがスラッシュに置き換えられています。

    次の例では、バイク名の「x」のすべてのインスタンスを「10」に置き換えます。

    ソリューション2:

    SELECT id,
      REPLACE( name, 'x', '10' ) as new_name,
      part_number
    FROM motorbike_sale
    WHERE id>1;
    

    このクエリは、WHERE句を使用して、 idを持つ行のレコードをフィルタリングします。 2以上の値。

    ホンダのバイクの名前が「x」から「10」に変更されましたが、スズキのバイクの名前は変更されていないことに注意してください。なぜだめですか? REPLACE()では大文字と小文字が区別されるためです。したがって、「x」は「X」と同じではありません。この例では、「x」は「10」に置き換えられましたが、「X」は変更されていません。

    このクエリには、ホンダのバイクの新しい名前とスズキのバイクの古い名前が表示されます。

    id new_name part_number
    ホンダCB750-10 012-GK8-A8
    鈴木隼X 798-25-28

    1. Oracleの明示カーソルと暗黙カーソルの違いは何ですか?

    2. PostgreSQLを使用して過去24時間からレコードを選択する方法

    3. OracleSQLAnalyticクエリ-再帰的なスプレッドシートのような累計

    4. 一致するものがない場合は、最初のレコードを選択します