2011-12-16 8 views
9

मैं एक PHP और MySQL एप्लिकेशन लिख रहा हूं जिसमें मुझे एकाधिक स्तंभ मानों को एक कॉलम में जोड़ना होगा। मैं concat() फ़ंक्शन का उपयोग करता, लेकिन यह नहीं करता शून्य मानों को संभालें, और concat_ws(), जो आउटपुट में परिणाम को वापस नहीं लौटाता है। क्या मैं जरूरत इस तरह Oracle डाटाबेस में प्राप्त किया जा सकता:MySQL क्वेरी में संगत मान (शून्य मानों को संभालने के लिए)

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

मेरे मुद्दा मैं कैसे MySQL..without ऊपर नाम फ़ंक्शन का उपयोग के साथ इस एक ही परिणाम प्राप्त कर सकते हैं?

उत्तर

24

CONCATIFNULL साथ concat रहे हैं:

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

उपयोग coalesce कोई रिक्त स्ट्रिंग

select concat(coalesce(null, '')); 
10

तुम भी CONCAT_WS समारोह का उपयोग कर सकते हैं जो शून्य की देखभाल को महत्व देता है लेता है

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

@Minesh : CONCAT_WS नल मानों की 'देखभाल' नहीं करता है। ऊपर के उदाहरण में इसे दर्शाने के लिए ...

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

, अगर house.addressशून्य है लौटे परिणाम एक साफ डबल टिल्डा शामिल नहीं होंगे (~~) की उम्मीद के रूप में। यह केवल 1 tilda के साथ एक tilda अलग सूची होगी। उदाहरण के लिए "मज़ा हाउस ~ हवेली"

+1

इसके साथ यह विभाजक है साथ ही इसे हटा करता है, जहां है उसमें समस्या? यह साफ समाधान है जब तक कि आप कुछ और करना नहीं चाहते – CME64

+1

मुझे यह बुरा लगता है क्योंकि फ़ंक्शन 2 अलग-अलग कार्य करता है, जिसमें से दूसरा फ़ंक्शन नाम द्वारा सुझाया नहीं जाता है। सबसे पहले यह संगत, महान, धन्यवाद, यही वही था जो मैं चाहता था। फिर यह खाली स्ट्रिंग सूची आइटम हटा देता है, वाह, मैंने आपको ऐसा करने के लिए नहीं कहा था। फ़ंक्शन को CONCAT_NN_WS() कहा जाना चाहिए जहां एनएन "नल नल" के लिए खड़ा है। अगर मैं अपने सॉफ़्टवेयर से 5 चीजों को एक सूची में जोड़ने के लिए कहता हूं, तो मुझे 5 आइटम सूची की उम्मीद है। मैं तब सॉफ्टवेयर से यह कहने की उम्मीद नहीं करता हूं कि "ओह वैसे, मैंने डिब्बे खाली कर दिए, बिल्ली को खिलाया और सप्ताहांत के लिए उसे आमंत्रित करने के लिए अपनी मां को फोन किया" –

+0

आप सही हैं यह उपयोगी होगा और यह होना चाहिए कार्यान्वित किया गया है (इस विधि को अन्य उद्देश्यों के लिए भी रखते हुए)। – CME64

0

एक छोटी सी चाल: CONCAT_WS साथ विभाजक की तरह रिक्त स्ट्रिंग का उपयोग करें (कभी-कभी आप सफेद रिक्त स्थान सम्मिलित wan't)

CONCAT_WS('','The Surname Is:',lastname) 
FROM `employees` 
संबंधित मुद्दे