Tsql

2011-04-18 16 views
8

में संक्षिप्त मूल्य कॉलम को समेकित करें, मैं कई कॉलम मान को जोड़ने के लिए + का उपयोग करता हूं। लेकिन + काम नहीं करता है अगर उस कॉलम में से कोई एक शून्य मान है। उदाहरण के लिएTsql

Select null+ 'Test' 

क्वेरी 'टेस्ट' के बजाय शून्य वापस लौटाती है।

उस समस्या को हल करने के लिए आपकी क्या सलाहएं हैं?

उत्तर

16

एसक्यूएल सर्वर 2012 से पहले के संस्करणों पर आप

Select ISNULL(YourColumn,'') + 'Test' /*Or COALESCE(YourColumn,'')*/ 

का उपयोग इस समस्या से बचने के लिए करना चाहिए।

एक कनेक्शन विकल्प SET CONCAT_NULL_YIELDS_NULL OFF है लेकिन यह बहिष्कृत है।

SQL Server 2012 CONCAT फ़ंक्शन पेश करता है जो NULL को संगत होने पर खाली स्ट्रिंग के रूप में मानता है। ?

SELECT CONCAT(null,'Test') 
+0

वहाँ इसे हल करने का एक और तरीका मैं mssql को ओरेकल से अपने प्रोजेक्ट पलायन कर रहा हूँ, मैं हर नियंत्रण – jhash

+0

@jhash को isnull नियंत्रण जोड़ने चाहते हैं न है - केवल 3 जिन तरीकों से मुझे पता है वे पहले से ही मेरे उत्तर में हैं। 'ISNULL',' COALESCE', या 'CONCAT_NULL_YIELDS_NULL'। मैं बस सभी प्रासंगिक स्थानों पर 'COALESCE' जोड़ूंगा क्योंकि यह मानक है और ओरेकल और SQL सर्वर दोनों में काम करेगा। यदि आप बहिष्कृत सुविधाओं का उपयोग करना चाहते हैं तो आप पर निर्भर हैं लेकिन वे भविष्य के संस्करणों में काम करना बंद कर देंगे और यह कनेक्शन विकल्प कुछ SQL सर्वर कार्यक्षमता के साथ संगत नहीं है। मैं इसे खुद का उपयोग नहीं करता। उर विस्तृत जवाब –

+0

धन्यवाद मार्टिन - हालांकि वास्तव में मैं अपने दावा है कि यह ओरेकल अब काम करेंगे शक कर रहा हूँ। 'COALESCE' निश्चित रूप से होगा लेकिन AFAIK ओरेकल खाली स्ट्रिंग को न्यूल के रूप में मानता है इसलिए मुझे नहीं पता कि शुद्ध परिणाम क्या होगा! – jhash

0

उपयोग IsNull:

SELECT IsNull(MyColumn, '') + 'Test' ... 
+0

वहाँ इसे हल करने की एक और तरीका है का उपयोग कर रहा हूँ? मैं mssql को ओरेकल से अपने प्रोजेक्ट पलायन कर रहा हूँ, मैं हर नियंत्रण – jhash

+0

को isnull नियंत्रण जोड़ने चाहते हैं न मुझे लगता है कि मार्टिन एक समाधान है कि क्वेरी को बदले बिना काम करेगा है – Larry

संबंधित मुद्दे