Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

इंट से कास्ट/कन्वर्ट क्यों एक तारक देता है

और भी मजे के लिए, इसे आजमाएं:

DECLARE @i INT
SET @i = 100
SELECT CAST(@i AS VARCHAR(2)) -- result: '*'
go

DECLARE @i INT
SET @i = 100
SELECT CAST(@i AS NVARCHAR(2)) -- result: Arithmetic overflow error

:)

आपके प्रश्न का उत्तर है:"ऐतिहासिक कारण"

डेटाटाइप INT और VARCHAR BIGINT और NVARCHAR से पुराने हैं। बहुत पुराना। वास्तव में वे मूल . में हैं एसक्यूएल चश्मा। आउटपुट को तारांकन से बदलने का अपवाद-दबाने वाला तरीका भी पुराना है।

बाद में, एसक्यूएल लोगों ने फैसला किया कि फर्जी (और आमतौर पर भ्रमित) आउटपुट स्ट्रिंग्स को प्रतिस्थापित करने से त्रुटि फेंकना बेहतर/अधिक सुसंगत आदि था। हालांकि निरंतरता के लिए उन्होंने डेटा-प्रकारों के पहले से मौजूद संयोजनों के लिए पूर्व व्यवहार को बरकरार रखा (ताकि मौजूदा कोड को भंग न किया जा सके)।

इसलिए (काफी) बाद में जब बिगिनट और NVARCHAR डेटाटाइप जोड़े गए, तो उन्हें नया (एर) व्यवहार मिला क्योंकि वे ऊपर बताए गए दादाजी द्वारा कवर नहीं किए गए थे।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में सांख्यिकी प्रोफ़ाइल क्या है?

  2. SQL सर्वर 2017 में एक दृश्य बनाएँ

  3. Azure SQL डेटाबेस में DTU क्या है और यह कैसे पता करें कि हमें कितनी आवश्यकता है

  4. LIKE फ़िल्टर में अंडरस्कोर वर्ण का उपयोग करने से मुझे सभी परिणाम क्यों मिलते हैं?

  5. SQL सर्वर प्रतिस्थापन () बनाम अनुवाद ():अंतर क्या हैं?