sql >> Base de Datos >  >> RDS >> Mysql

Cómo reemplazar parte de una cadena en MySQL

Problema:

Le gustaría reemplazar parte de una cadena con otra cadena en MySQL.

Ejemplo:

Nuestra base de datos tiene una tabla llamada motorbike_sale con datos en el id , name y part_number columnas.

id nombre número_de_parte
1 Harley Davidson x 1245-AC2-25
2 Honda CB750-x 012-GK8-A8
3 Suzuki Hayabusa X 798-25-28

Nos gustaría cambiar los números de pieza de las motos reemplazando todos los guiones con barras diagonales.

Solución 1:

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

Esta consulta devuelve una lista de nombres de motocicletas y nuevos números de pieza. Observe las barras diagonales que han reemplazado a los guiones en los números de pieza:

nombre nuevo_número_de_pieza
Harley Davidson x 1245/AC2/25
Honda CB750-x 012/GK8/A8
Suzuki Hayabusa X 798/25/28

Discusión:

Use la función MySQL REPLACE() para reemplazar una subcadena (es decir, palabras, un carácter, etc.) con otra subcadena y devolver la cadena modificada. Esta función toma tres argumentos:

  • La cadena a cambiar. (En nuestro ejemplo, es la columna part_number .)
  • La subcadena a reemplazar (es decir, el carácter '-').
  • La subcadena a insertar (es decir, el carácter '/').

Tenga en cuenta que esta función reemplaza a todos ocurrencias de la subcadena en la cadena o columna dada. En nuestro ejemplo, cada part_number contiene tres caracteres de guión, cada uno de los cuales fue reemplazado por una barra inclinada.

En el siguiente ejemplo, reemplazaremos todas las instancias de 'x' en los nombres de motocicletas con '10'.

Solución 2:

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

Esta consulta usa una cláusula WHERE para filtrar registros por filas con un id valor de 2 o mayor.

Observe que el nombre de la moto Honda se cambió de 'x' a '10', pero el nombre de la moto Suzuki no se cambió. ¿Por qué no? Porque REPLACE() distingue entre mayúsculas y minúsculas. Por lo tanto, 'x' no es lo mismo que 'X'. En este ejemplo, 'x' fue reemplazada por '10', pero 'X' no cambió.

Esta consulta muestra el nuevo nombre de la moto Honda y el antiguo nombre de la moto Suzuki.

id nuevo_nombre número_de_parte
Honda CB750-10 012-GK8-A8
Suzuki Hayabusa X 798-25-28