Como posso anexar uma string a um campo existente no MySQL?


101

Eu quero atualizar o código em todos os meus registros para o que eles são atualmente mais _padrão de alguma ideia?

Por exemplo, se os códigos são apple_1 e apple_2, preciso que sejam apple_1_standard e apple_2_standard

Antes:

id   code
------------
1    apple_1 
1    apple_2

Consulta Psuedo:

update categories set code = code + "_standard" where id = 1;

Resultado esperado:

id   code
----------------------
1    apple_1_standard 
1    apple_2_standard

Respostas:


224

Você precisa usar a CONCAT()função no MySQL para concatenação de string:

UPDATE categories SET code = CONCAT(code, '_standard') WHERE id = 1;

60
Caso alguém tenha o mesmo problema que eu: Se o campo codefor NULL por padrão, você precisará usar: UPDATE categories SET code = CONCAT(IFNULL(code,''), '_standard') WHERE id = 1;Caso contrário, o concat sempre resultará em NULL.
Kai Noack

3
Alternativamente, você pode usar CONCAT_WS que ignora os valores NULL. Por exemplo, SELECT CONCAT_WS(', ','First name',NULL,'Last Name'); fornece 'Nome, Sobrenome'
BarneySchmale

@Daniel Que tal atualizar a resposta de acordo com os comentários acima?
kiedysktos

pergunta especial / separada para possível caso nulo: stackoverflow.com/questions/14020867/…
qdinar

0

Atualize o campo da imagem para adicionar o URL completo, ignorando os campos nulos:

UPDATE test SET image = CONCAT('https://my-site.com/images/',image) WHERE image IS NOT NULL;
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.