टी-एसक्यूएल कास्ट बनाम कन्वर्ट


325

जब आपको CASTबनाम का उपयोग करना चाहिए तो सामान्य मार्गदर्शन क्या है CONVERT? क्या कोई प्रदर्शन मुद्दों को एक बनाम दूसरे को चुनने से संबंधित है? क्या कोई ANSI-SQL के करीब है?

जवाबों:


339

CONVERTSQL सर्वर विशिष्ट है, CASTANSI है।

CONVERTइसमें और अधिक लचीला है कि आप दिनांक आदि को प्रारूपित कर सकते हैं। इसके अलावा, वे बहुत अधिक समान हैं। यदि आप विस्तारित सुविधाओं के बारे में परवाह नहीं करते हैं, तो उपयोग करें CAST

संपादित करें:

जैसा कि नीचे टिप्पणी में @beruic और @CF द्वारा उल्लेख किया गया है, एक अंतर्निहित रूपांतरण का उपयोग किए जाने पर परिशुद्धता का संभावित नुकसान होता है (यह वह जगह है जहां आप न तो कास्ट और न ही कंवर्ट का उपयोग करते हैं)। अधिक जानकारी के लिए, CAST और CONVERT और विशेष रूप से इस ग्राफ़िक को देखें: SQL सर्वर डेटा प्रकार रूपांतरण चार्ट । इस अतिरिक्त जानकारी के साथ, मूल सलाह अभी भी वही है। जहाँ संभव हो CAST का प्रयोग करें।


5
इसके अलावा, मेरा मानना ​​है कि कुछ संख्यात्मक रूपांतरण हैं जहां CAST का उपयोग परिशुद्धता को संरक्षित करने के लिए किया जाना चाहिए, लेकिन मुझे इस जानकारी के लिए एक विश्वसनीय स्रोत खोजने में परेशानी हो रही है।
बेरिके

2
@beruic आप सही हैं, MSDN में जानकारी है: msdn.microsoft.com/en-us/library/ms187928.aspx DECIMAL और NUMERIC प्रकारों के बीच कनवर्ट करते समय परिशुद्धता को बनाए रखने के लिए CAST आवश्यक है।
CF

@CF आपको यह जानकारी कहां दिखाई देती है? मैंने लिंक का अनुसरण किया है, जो CAST और CONVERT पर सामान्य पृष्ठ खोलता है, और सटीक जानकारी के बारे में एकमात्र जानकारी जो मैं तैरने वाले मूल्यों के रूपांतरण के बारे में है, जो वैज्ञानिक संकेतन का उपयोग करते हैं। क्या मैं अपनी प्रारंभिक टिप्पणी में गलत हो सकता हूं?
बेरूइक

6
@beruic यह इस लेख के तल पर इस तस्वीर के बारे में है i.msdn.microsoft.com/dynimg/IC170617.gif अब मुझे लगता है कि शायद संभावित नुकसान निहित रूपांतरण में हो सकता है और जब CBS और CONVERT का उपयोग किया जाता है तो ऐसा नहीं होता है । यह बिल्कुल स्पष्ट नहीं है ...
CF

2
@ CF मैं मानता हूं कि यह बहुत स्पष्ट नहीं है, और निश्चित रूप से इसके बारे में अधिक विशिष्ट दस्तावेज होना चाहिए, इसलिए आशा है कि Microsoft ऐसा करता है। लेकिन अच्छी तरह से वहां देखा :)
beruic


12

CAST मानक SQL है, लेकिन CONVERT केवल बोली T-SQL के लिए है। डेटाइम के मामले में कन्वर्ट करने के लिए हमारे पास एक छोटा सा फायदा है।

CAST के साथ, आप अभिव्यक्ति और लक्ष्य प्रकार को इंगित करते हैं; CONVERT के साथ, रूपांतरण के लिए शैली का प्रतिनिधित्व करने वाला एक तीसरा तर्क है, जो कुछ रूपांतरणों के लिए समर्थित है, जैसे चरित्र तार और दिनांक और समय मान। उदाहरण के लिए, CONVERT (DATE, '1/2/2012', 101) शाब्दिक चरित्र स्ट्रिंग को DATE को शैली 101 का उपयोग करके संयुक्त राज्य अमेरिका के मानक का प्रतिनिधित्व करता है।


8

शक्ति द्वारा कॉपी किए गए उपरोक्त उत्तर पर विस्तार करने के लिए , मैं वास्तव में दो कार्यों के बीच एक प्रदर्शन अंतर को मापने में सक्षम हूं।

मैं इस प्रश्न के समाधान की विविधताओं के प्रदर्शन का परीक्षण कर रहा था और पाया कि उपयोग करते समय मानक विचलन और अधिकतम रनटाइम्स बड़े थे CAST

मिलीसेकंड में रनटाइम्स * मिलीसेकंड में टाइम्स, प्रकार की शुद्धता के अनुसार एक सेकंड के निकटतम 1/300 वें दौर तक पहुंच गयाDateTime


6

लगता है कि कोई भी अभी तक पठनीयता है लगता है। बीत रहा है ...

CONVERT(SomeType,
    SomeReallyLongExpression
    + ThatMayEvenSpan
    + MultipleLines
    )

… समझने में आसान हो सकता है…

CAST(SomeReallyLongExpression
    + ThatMayEvenSpan
    + MultipleLines
    AS SomeType
    )

2
लेकिन, मुझे लगता है कि CAST आमतौर पर अधिक पठनीय है। लंबी अभिव्यक्तियों की CAST(Column1 AS int)तुलना में CONVERT(int, Column1)भी पढ़ने के लिए अधिक तार्किक है
S.Serpooshan

4

CAST ANSI मानक का उपयोग करता है। पोर्टेबिलिटी के मामले में, यह अन्य प्लेटफार्मों पर काम करेगा। CONVERT sql सर्वर के लिए विशिष्ट है। लेकिन बहुत मजबूत कार्य है। आप तिथियों के लिए विभिन्न शैलियों को निर्दिष्ट कर सकते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.