Comment puis-je ajouter une chaîne à un champ existant dans MySQL?

101

Je veux mettre à jour le code de tous mes enregistrements à ce qu'ils sont actuellement plus _standard des idées?

Donc, par exemple, si les codes sont apple_1 et apple_2, j'ai besoin qu'ils soient apple_1_standard et apple_2_standard

Avant:

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

Requête Psuedo:

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

Résultat attendu:

id   code
----------------------
1    apple_1_standard 
1    apple_2_standard
Matt Elhotiby
la source

Réponses:

224

Vous devez utiliser la CONCAT()fonction dans MySQL pour la concaténation de chaînes:

UPDATE categories SET code = CONCAT(code, '_standard') WHERE id = 1;
Daniel Vassallo
la source
61
Juste au cas où quelqu'un rencontre le même problème que moi: Si le champ codeest NULL par défaut, vous devez utiliser: UPDATE categories SET code = CONCAT(IFNULL(code,''), '_standard') WHERE id = 1;Sinon, le concat aboutira toujours à NULL.
Kai Noack
3
Vous pouvez également utiliser CONCAT_WS qui ignore les valeurs NULL. Par exemple, SELECT CONCAT_WS(', ','First name',NULL,'Last Name'); donne `` Prénom, nom ''
BarneySchmale
@Daniel Que diriez-vous de mettre à jour la réponse en fonction des commentaires ci-dessus?
kiedysktos
question spéciale / séparée pour un éventuel cas nul: stackoverflow.com/questions/14020867/…
qdinar
0

Mettez à jour le champ d'image pour ajouter une URL complète, en ignorant les champs nuls:

UPDATE test SET image = CONCAT('https://my-site.com/images/',image) WHERE image IS NOT NULL;
gus
la source