sql >> Database teknologi >  >> RDS >> Mysql

Sådan udskiftes en del af en streng i MySQL

Problem:

Du vil gerne erstatte en del af en streng med en anden streng i MySQL.

Eksempel:

Vores database har en tabel med navnet motorbike_sale med data i id , name , og part_number kolonner.

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

Vi vil gerne ændre motorcyklernes varenumre ved at erstatte alle bindestreg med skråstreger.

Løsning 1:

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

Denne forespørgsel returnerer en liste over motorcykelnavne og nye delnumre. Læg mærke til de fremre skråstreger, der har erstattet bindestregerne i varenumrene:

navn nyt_ varenummer
Harley Davidson x 1245/AC2/25
Honda CB750-x 012/GK8/A8
Suzuki Hayabusa X 798/25/28

Diskussion:

Brug funktionen MySQL REPLACE() til at erstatte en understreng (dvs. ord, et tegn osv.) med en anden understreng og returnere den ændrede streng. Denne funktion tager tre argumenter:

  • Den streng, der skal ændres. (I vores eksempel er det kolonnen part_number .)
  • Den understreng, der skal erstattes (dvs. tegnet '-').
  • Den understreng, der skal indsættes (dvs. tegnet '/').

Bemærk, at denne funktion erstatter alle forekomster af understrengen i den givne streng eller kolonne. I vores eksempel er hver part_number indeholder tre bindestreg, som hver er erstattet af en skråstreg.

I det næste eksempel erstatter vi alle forekomster af 'x' i motorcykelnavne med '10'.

Løsning 2:

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

Denne forespørgsel bruger en WHERE-sætning til at filtrere poster for rækker med et id værdi på 2 eller derover.

Bemærk, at Honda-motorcyklens navn blev ændret fra 'x' til '10', men Suzuki-motorcyklens navn blev ikke ændret. Hvorfor ikke? Fordi REPLACE() skelner mellem store og små bogstaver. Derfor er 'x' ikke det samme som 'X'. I dette eksempel blev 'x' erstattet af '10', men 'X' var uændret.

Denne forespørgsel viser det nye navn på Honda-motorcyklen og det gamle navn på Suzuki-motorcyklen.

id nyt_navn part_number
Honda CB750-10 012-GK8-A8
Suzuki Hayabusa X 798-25-28

  1. Sådan konverteres en streng til hexadecimal i MySQL – HEX()

  2. Hvordan omdøber jeg hurtigt en MySQL-database (ændrer skemanavn)?

  3. Oracle sql tutorial:Grundlæggende SQL-erklæring

  4. Håndtering af primære nøglekonflikter ved indsættelse af data i SQLite