Jak mogę dołączyć ciąg do istniejącego pola w MySQL?

101

Chcę zaktualizować kod we wszystkich moich rekordach do tego, czym są obecnie, plus _standardowe pomysły?

Na przykład, jeśli kody to apple_1 i apple_2, potrzebuję, aby były to apple_1_standard i apple_2_standard

Przed:

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

Zapytanie pseudo:

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

Spodziewany wynik:

id   code
----------------------
1    apple_1_standard 
1    apple_2_standard
Matt Elhotiby
źródło

Odpowiedzi:

224

Musisz użyć CONCAT()funkcji w MySQL do konkatenacji ciągów:

UPDATE categories SET code = CONCAT(code, '_standard') WHERE id = 1;
Daniel Vassallo
źródło
61
Na wypadek, gdyby ktoś napotkał ten sam problem, co ja: Jeśli pole codema domyślnie wartość NULL, musisz użyć: UPDATE categories SET code = CONCAT(IFNULL(code,''), '_standard') WHERE id = 1;W przeciwnym razie konkatacja zawsze da NULL.
Kai Noack
3
Alternatywnie możesz użyć CONCAT_WS, który pomija wartości NULL. Na przykład SELECT CONCAT_WS(', ','First name',NULL,'Last Name'); podaje „Imię, Nazwisko”
BarneySchmale
@Daniel Co powiesz na zaktualizowanie odpowiedzi zgodnie z powyższymi komentarzami?
kiedysktos
specjalne / oddzielne pytanie dotyczące ewentualnego przypadku zerowego: stackoverflow.com/questions/14020867/…
qdinar
0

Zaktualizuj pole obrazu, aby dodać pełny adres URL, ignorując pola puste:

UPDATE test SET image = CONCAT('https://my-site.com/images/',image) WHERE image IS NOT NULL;
gus
źródło