Ignacio işaret ettiği gibi, bir veritabanı tasarım sorunu var. Bunun yerine tek bir sütunda yer alan bilgilerin ayrı parçalar da dahil olmak üzere, bu sütun satır başına bir bilgi parçası ile ayrı bir tablo haline gelmelidir. O "meyve" alan "şapka" adı verilen bir tabloda ise Örneğin, bir sütun "hat_id" ile "şapka" için bir tablo olurdu but no information about fruits ve iki sütun ile ikinci bir sütun "hat_fruits" , "hat_id" ve "fruit_name". Sizin örnekte verilen şapka "hat_fruits", her bir meyve için bir üç satır olurdu.
Eğer bu tasarımı (Eğer veritabanı tasarımı kontrolü varsa) uygulamak kez size başlangıçta vardı basit UPDATE komutunu kullanmak için geri gidebilirsiniz. Ayrıca, meyve türüne göre muktedir dizin daha kolay arama, daha az disk alanı kullanımı, meyve adlarını doğrulamak ve veritabanına uygun meyve sayısında herhangi bir keyfi bir sınırı olmayacak
Yani kesinlikle veritabanı yapısını düzeltmek değil eğer, böyle bir şey deneyebilirsiniz, şunları söyledi:
REPLACE(REPLACE(CONCAT(',', fruits, ','), ', ', ','), ',apples,', ',oranges,')
Bu canavarlık ilk başlar ve virgül ile sona meyve alan dönüştürür, sonra virgülle önce tüm boşlukları kaldırır. Bu size meyve isimleri açıkça virgülle sınırlandırılmış olduğu bir dize vermelidir. Son olarak, o, elma, (sınırlayıcı dikkat edin), portakal, yerini.
Bundan sonra, tabii ki, (o okuyucu için bir alıştırma olarak bırakılmıştır) başlangıç ve bitiş virgül kapalı şerit ve virgülden sonra boşluk geri koymak gerek.
Update: Tamam, ben o kadar arıyorum dayanamadı:
REPLACE(TRIM(',' FROM REPLACE(REPLACE(CONCAT(',', fruits, ','), ', ', ','), ',apples,', ',oranges,')), ',', ' ,')
Bu test unutmayın ve ben yine bir MySQL uzmanı değilim - MySQL fonksiyonu yuvalama sorunları ya da böyle bir şey varsa ben bilmiyorum.
PS: Don't tell anyone I was the one who showed you this!