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

Odpowiedzi:


224

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

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

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;
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.