Как добавить строку к существующему полю в MySQL?

102

Я хочу обновить код всех моих записей до того, что они есть на данный момент, плюс _standard какие-нибудь идеи?

Так, например, если коды - apple_1 и apple_2, мне нужно, чтобы они были apple_1_standard и apple_2_standard.

Перед:

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

Псевдо-запрос:

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

Ожидаемый результат:

id   code
----------------------
1    apple_1_standard 
1    apple_2_standard
Мэтт Элхотиби
источник
дубликат stackoverflow.com/questions/2761583/…
qdinar 09

Ответы:

225

Вам нужно использовать CONCAT()функцию в MySQL для конкатенации строк:

UPDATE categories SET code = CONCAT(code, '_standard') WHERE id = 1;
Даниэль Вассалло
источник
61
На всякий случай, если кто-то столкнется с той же проблемой, что и я: если поле codeпо умолчанию равно NULL, вам нужно использовать: в UPDATE categories SET code = CONCAT(IFNULL(code,''), '_standard') WHERE id = 1;противном случае concat всегда будет приводить к NULL.
Кай Ноак
3
В качестве альтернативы вы можете использовать CONCAT_WS, который пропускает значения NULL. Например, SELECT CONCAT_WS(', ','First name',NULL,'Last Name'); выдает «Имя, Фамилия»
BarneySchmale
@Daniel Как насчет обновления ответа в соответствии с комментариями выше?
kiedysktos
специальный / отдельный вопрос для возможного нулевого случая: stackoverflow.com/questions/14020867/…
qdinar 09
0

Обновите поле изображения, чтобы добавить полный URL, игнорируя пустые поля:

UPDATE test SET image = CONCAT('https://my-site.com/images/',image) WHERE image IS NOT NULL;
гас
источник