Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como substituir parte de uma string no MySQL

Problema:


Você gostaria de substituir parte de uma string por outra string no MySQL.

Exemplo:


Nosso banco de dados tem uma tabela chamada motorbike_sale com dados no id , name e part_number colunas.
id nome part_number
1 Harley Davidson x 1245-AC2-25
2 Honda CB750-x 012-GK8-A8
3 Suzuki Hayabusa X 798-25-28

Gostaríamos de alterar os números de peça das motocicletas substituindo todos os caracteres de hífen por barras.

Solução 1:

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

Esta consulta retorna uma lista de nomes de motos e novos números de peças. Observe as barras que substituíram os hífens nos números de peça:
nome new_ part_number
Harley Davidson x 1245/AC2/25
Honda CB750-x 012/GK8/A8
Suzuki Hayabusa X 798/25/28

Discussão:


Use a função MySQL REPLACE() para substituir uma substring (ou seja, palavras, um caractere, etc.) por outra substring e retornar a string alterada. Esta função recebe três argumentos:
  • A string a ser alterada. (No nosso exemplo, é a coluna part_number .)
  • A substring a ser substituída (ou seja, o caractere '-').
  • A substring a ser inserida (ou seja, o caractere '/').

Observe que esta função substitui todos ocorrências da substring na string ou coluna fornecida. Em nosso exemplo, cada part_number contém três caracteres de hífen, cada um dos quais foi substituído por uma barra.

No próximo exemplo, substituiremos todas as instâncias de 'x' em nomes de motos por '10'.

Solução 2:

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

Esta consulta usa uma cláusula WHERE para filtrar registros para linhas com um id valor de 2 ou maior.

Observe que o nome da moto Honda foi alterado de 'x' para '10', mas o nome da moto Suzuki não foi alterado. Por que não? Porque REPLACE() faz distinção entre maiúsculas e minúsculas. Portanto, 'x' não é o mesmo que 'X'. Neste exemplo, 'x' foi substituído por '10', mas 'X' permaneceu inalterado.

Esta consulta exibe o novo nome da motocicleta Honda e o nome antigo da motocicleta Suzuki.
id novo_nome part_number
Honda CB750-10 012-GK8-A8
Suzuki Hayabusa X 798-25-28