आपको CAST()
use का उपयोग करना चाहिए या TRY_CAST()
इसके बजाय:
declare @test nvarchar(8) = '12345678'
select cast(@test as bigint) -- errors on failure
select try_cast(@test as bigint) -- returns null on failure
साथ ही, ISNUMERIC()
. को इंगित करना महत्वपूर्ण है परिपूर्ण नहीं है। दस्तावेज़ों
से :
ISNUMERIC कुछ वर्णों के लिए 1 देता है जो संख्याएं नहीं हैं, जैसे कि प्लस (+), माइनस (-), और वैध मुद्रा प्रतीक जैसे डॉलर चिह्न ($)। मुद्रा प्रतीकों की पूरी सूची के लिए, धन और लघु धन (Transact-SQL) देखें।
इस कारण से मुझे नहीं लगता कि यहां तार्किक जांच का कोई महत्व है। TRY_CAST()
का उपयोग करने के लिए सबसे अच्छा सभी मूल्यों पर, पात्रों की उपस्थिति की परवाह किए बिना और अनुमानित तरीके से शून्य प्रतिक्रिया को संभालते हैं।