Wie kann ich eine Zeichenfolge an ein vorhandenes Feld in MySQL anhängen?

101

Ich möchte den Code in allen meinen Datensätzen auf den aktuellen Stand bringen.

Wenn die Codes zum Beispiel apple_1 und apple_2 sind, müssen sie apple_1_standard und apple_2_standard sein

Vor:

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

Pseudo-Abfrage:

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

Erwartetes Ergebnis:

id   code
----------------------
1    apple_1_standard 
1    apple_2_standard
Matt Elhotiby
quelle

Antworten:

223

Sie müssen die CONCAT()Funktion in MySQL für die Verkettung von Zeichenfolgen verwenden:

UPDATE categories SET code = CONCAT(code, '_standard') WHERE id = 1;
Daniel Vassallo
quelle
60
Nur für den Fall, dass jemand auf dasselbe Problem stößt wie ich: Wenn das Feld codestandardmäßig NULL ist, müssen Sie UPDATE categories SET code = CONCAT(IFNULL(code,''), '_standard') WHERE id = 1;Folgendes verwenden: Andernfalls führt der Concat immer zu NULL.
Kai Noack
3
Alternativ können Sie CONCAT_WS verwenden, das NULL-Werte überspringt. BeispielsweiseSELECT CONCAT_WS(', ','First name',NULL,'Last Name'); gibt 'Vorname, Nachname'
BarneySchmale
@ Daniel Wie wäre es mit einer Aktualisierung der Antwort gemäß den obigen Kommentaren?
Kiedysktos
spezielle / separate Frage für möglichen Nullfall
qdinar
0

Aktualisieren Sie das Bildfeld, um eine vollständige URL hinzuzufügen, und ignorieren Sie dabei Nullfelder:

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