Microsoft के अनुसार दस्तावेज़ीकरण , समारोह के लिए:
ISNULL(check_expression, replacement_value)
replacement_value
एक प्रकार का होना चाहिए जो परोक्ष रूप से check_expression
. के प्रकार में परिवर्तनीय हो . ध्यान दें कि 'xy'+NULL
. के लिए टाइप करें है VARCHAR(3)
. इस वजह से आपकी स्ट्रिंग 'ABCDEFGHIJ'
VARCHAR(3)
. पर डाला जाता है और इस प्रकार छंटनी की।
यह अजीब लगता है कि यह VARCHAR(2)
क्यों नहीं है? , लेकिन यह तरीका है - 'xy'
. से एक वर्ण लंबा . आप इसके साथ खेल सकते हैं SQLFiddle
और अपने लिए देखें कि 'xy'+NULL
. के लिए वह टाइप करें अभिव्यक्ति के लिए समान है CASE WHEN 1=2 THEN 'XYZ' ELSE NULL END
, जो NULL
. है लेकिन परोक्ष रूप से VARCHAR(3)
. के अनुकूल है ।
ऐसा लगता है कि अभिव्यक्ति के लिए 'xy'+NULL
अनुमानित लंबाई की गणना 'xy'
. के रूप में की जा सकती है प्रत्येक NULL
. के लिए स्ट्रिंग की लंबाई (2) प्लस 1 जोड़ा गया। उदाहरण के लिए, टाइप करें 'xy'+NULL+NULL
है VARCHAR(4)
, के लिए टाइप करें 'xy'+NULL+NULL+NULL
है VARCHAR(5)
और इसी तरह - इसे देखें SQLFiddle
. यह बेहद अजीब है, लेकिन MS SQL Server 2008 और 2012 इसी तरह काम करते हैं।