साथ स्ट्रिंग प्रकार की तरह कॉलम character(2)
(जैसा कि आप बाद में उल्लेख किया है), प्रदर्शित संयोजन सिर्फ इसलिए काम करता है, मैनुअल के हवाले से:
[...] स्ट्रिंग संघनन ऑपरेटर ( ||
) गैर-स्ट्रिंग इनपुट को स्वीकार करता है, जब तक कि कम से कम एक इनपुट एक स्ट्रिंग प्रकार का न हो , जैसा कि तालिका ९ । conc में दिखाया गया है
। अन्य मामलों के लिए, एक स्पष्ट ज़बरदस्ती डालें text
[...]
बोल्ड जोर मेरा। दूसरा उदाहरण ( select a||', '||b from foo
) किसी भी डेटा प्रकार के लिए काम करता है क्योंकि किसी भी मामले में पूरी अभिव्यक्ति को वैध बनाने के ', '
लिए अप्रतिबंधित स्ट्रिंग शाब्दिक चूक के बाद से text
।
गैर स्ट्रिंग डेटा प्रकारों के लिए, आप कर सकते हैं "ठीक" द्वारा 1 बयान कास्टिंग कम से कम एक के लिए तर्क text
। ( किसी भी प्रकार को कास्ट किया जा सकता है text
):
SELECT a::text || b AS ab FROM foo;
अपने स्वयं के उत्तर को देखते हुए , " काम नहीं करता है " का अर्थ " रिटर्न नाल " माना जाता था । NULL को सम्मिलित किसी भी चीज का परिणाम NULL है। यदि NULL मान शामिल हो सकते हैं और परिणाम NULL नहीं होगा, तो concat_ws()
किसी भी संख्या के मानों को संक्षिप्त करने के लिए उपयोग करें (पोस्ट 9.1 या बाद के संस्करण):
SELECT concat_ws(', ', a, b) AS ab FROM foo;
या concat()
यदि आपको विभाजकों की आवश्यकता नहीं है:
SELECT concat(a, b) AS ab FROM foo;
टाइप फ़ंक्शंस के लिए कोई ज़रूरत नहीं है क्योंकि दोनों फ़ंक्शन "any"
इनपुट लेते हैं और टेक्स्ट अभ्यावेदन के साथ काम करते हैं।
COALESCE
इस संबंधित उत्तर में अधिक विवरण (और एक खराब विकल्प क्यों है):
टिप्पणी में अद्यतन के बारे में
+
Postgres (या मानक SQL) में स्ट्रिंग समाकलन के लिए एक वैध ऑपरेटर नहीं है। इसे अपने उत्पादों में शामिल करना Microsoft का निजी विचार है।
उपयोग करने के लिए शायद ही कोई अच्छा कारण है character(n)
(समानार्थक शब्द char(n)
)। का प्रयोग करें text
याvarchar
। विवरण:
text
प्रकार?