2011-12-16 27 views
9

Birden çok sütun değerini tek bir sütunda birleştirmem gereken bir PHP ve MySQL uygulaması yazıyorum. Concat() işlevini kullanırdım, ancak null değerlerini ve sonuçta istediğim çıktıda sonuç vermeyen concat_ws() öğesini ele al. Ne ben böyle Oracle veritabanında sağlanabilir gerekir:MySQL Sorgusunda Concat Değerleri (Boş Değerleri Saptamak İçin)

Select 'The Surname Is'||last_name from employees; 

My Sayı i MySQL..without yukarıda adı işlevlerini kullanarak bu aynı sonucu elde edebilirsiniz nasıl?

cevap

24

CONCAT Concat için:

SELECT 
    CONCAT('The Surname Is ', IFNULL(last_name, 'sadly not available')) 
FROM `employees` 
10

Ayrıca CONCAT_WS işlevini kullanabilirsiniz NULL bakım değerleri alır

SELECT 
CONCAT_WS(' ','The Surname Is',lastname) 
FROM `employees` 
6

@Minesh : CONCAT_WS, NULL değerlerini 'dikkate almaz'. Yukarıdaki örnekte, ...

CONCAT_WS("~",house.name,house.address,house.type) 

Bunu göstermek için house.addressNULL ise döndürülen sonuç düzgün bir çift Tilda içermez (~~), beklendiği gibi. Sadece 1 tilda ile tilda ayrılmış bir liste olacak. mesela "eğlence Evi ~ konak"

+1

CONCAT_WS ile ayırıcı gibi kullanın boş dize (Bazı zamanlar beyaz boşluk eklemek wan't), nerede sorun bu? Başka bir şey yapmak istemediğiniz sürece bu düzgün bir çözümdür. – CME64

+1

Kötü olduğunu düşünüyorum çünkü işlev 2 farklı görevi yerine getiriyor, ikincisi işlev adı tarafından önerilmiyor. Öncelikle, bir araya geldi, harika, teşekkürler, istediğim buydu. Sonra boş dize liste öğelerini kaldırır, woah, bunu yapmanı istemedim. İşlev, NN'nin "Boş Değil" anlamına geldiği CONCAT_NN_WS() olarak adlandırılmalıdır. Yazılımımın 5 şeyi bir liste halinde birleştirmesini istesem 5 öğe listesi beklerim. O zaman yazılımın beklemesini beklemiyorum. "Bu arada, çöp kutularını boşaltdım, kediyi besledim ve anneni de haftasonu için onu davet etmek için telefon ettim" –

+0

Haklısın, bu yararlı olacak ve uygulandı (bu yöntemi diğer amaçlar için de tutarak). – CME64

0

küçük bir hile: o ayracı ile birlikte sökün etmez

CONCAT_WS('','The Surname Is:',lastname) 
FROM `employees`