Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So ersetzen Sie einen Teil einer Zeichenfolge in MySQL

Problem:

Sie möchten einen Teil einer Zeichenfolge in MySQL durch eine andere Zeichenfolge ersetzen.

Beispiel:

Unsere Datenbank hat eine Tabelle namens motorbike_sale mit Daten in der id , name , und part_number Spalten.

id Name Teilenummer
1 Harley Davidson x 1245-AC2-25
2 Honda CB750-x 012-GK8-A8
3 Suzuki Hayabusa X 798-25-28

Wir möchten die Teilenummern der Motorräder ändern, indem wir alle Bindestriche durch Schrägstriche ersetzen.

Lösung 1:

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

Diese Abfrage gibt eine Liste mit Motorradnamen und neuen Teilenummern zurück. Beachten Sie die Schrägstriche, die die Bindestriche in den Teilenummern ersetzt haben:

name neue_ Teilenummer
Harley Davidson x 1245/AC2/25
Honda CB750-x 012/GK8/A8
Suzuki Hayabusa X 798/25/28

Diskussion:

Verwenden Sie die MySQL-Funktion REPLACE(), um einen Teilstring (d. h. Wörter, ein Zeichen usw.) durch einen anderen Teilstring zu ersetzen und den geänderten String zurückzugeben. Diese Funktion benötigt drei Argumente:

  • Die zu ändernde Zeichenfolge. (In unserem Beispiel ist es die Spalte part_number .)
  • Die zu ersetzende Teilzeichenfolge (d. h. das Zeichen „-“).
  • Die einzufügende Teilzeichenfolge (d. h. das Zeichen „/“).

Beachten Sie, dass diese Funktion all ersetzt Vorkommen der Teilzeichenfolge in der angegebenen Zeichenfolge oder Spalte. In unserem Beispiel jede part_number enthält drei Bindestriche, von denen jeder durch einen Schrägstrich ersetzt wurde.

Im nächsten Beispiel ersetzen wir alle Instanzen von „x“ in Motorradnamen durch „10“.

Lösung 2:

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

Diese Abfrage verwendet eine WHERE-Klausel, um Datensätze nach Zeilen mit einer id zu filtern Wert von 2 oder höher.

Beachten Sie, dass der Name des Honda-Motorrads von „x“ in „10“ geändert wurde, aber der Name des Suzuki-Motorrads wurde nicht geändert. Warum nicht? Weil REPLACE() zwischen Groß- und Kleinschreibung unterscheidet. Daher ist „x“ nicht dasselbe wie „X“. In diesem Beispiel wurde „x“ durch „10“ ersetzt, aber „X“ blieb unverändert.

Diese Abfrage zeigt den neuen Namen des Honda-Motorrads und den alten Namen des Suzuki-Motorrads an.

id neuer_name Teilenummer
Honda CB750-10 012-GK8-A8
Suzuki Hayabusa X 798-25-28