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
Matt Elhotiby
fonte

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;
Daniel Vassallo
fonte
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;
gus
fonte