Как добавить строку к существующему полю в 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

Ответы:


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;
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.