問題:
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 |