MySQL'de var olan bir alana nasıl dize ekleyebilirim?


103

Tüm kaydımdaki kodu şu anda ne olduklarına ve herhangi bir fikre standart olarak güncellemek istiyorum?

Örneğin, kodlar apple_1 ve apple_2 ise bunların apple_1_standard ve apple_2_standard olmasına ihtiyacım var

Önce:

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

Psuedo Sorgusu:

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

Beklenen Sonuç:

id   code
----------------------
1    apple_1_standard 
1    apple_2_standard

Yanıtlar:


228

CONCAT()Dize birleştirme için işlevi MySQL'de kullanmanız gerekir :

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

62
Birinin benim yaptığımla aynı sorunu yaşaması durumunda: Alan codevarsayılan olarak NULL ise şunu kullanmanız gerekir: UPDATE categories SET code = CONCAT(IFNULL(code,''), '_standard') WHERE id = 1;Aksi takdirde concat her zaman NULL ile sonuçlanacaktır.
Kai Noack

3
Alternatif olarak, NULL değerleri atlayan CONCAT_WS'yi kullanabilirsiniz. Örneğin SELECT CONCAT_WS(', ','First name',NULL,'Last Name'); , 'Ad, Soyad' verir
BarneySchmale

@Daniel Cevabı yukarıdaki yorumlara göre güncellemeye ne dersiniz?
kiedysktos

olası boş durum için özel / ayrı soru: stackoverflow.com/questions/14020867/…
qdinar

1

Boş alanları yok sayarak tam URL eklemek için görüntü alanını güncelleyin:

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

1
Komik olan şey, bu OP sorusuna çok iyi cevap vermese de, tam olarak ihtiyacım olan şey bu.
Daniel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.