दिलचस्प पोस्ट
क्या फोर्ट्रान सी से भारी गणना के लिए अनुकूल है? 'std :: basic_string <char>' से 'const char *' के लिए तर्क '1' को 'इंट सिस्टम (कॉन्स्ट char *)' में परिवर्तित नहीं किया जा सकता है कौन सा एक अच्छा अभ्यास है, एक शाब्दिक फ़ाइलशैली या एक टाइपोग्राफ? Android में JSON को कैसे पार्स करना है स्कीनी युद्ध, ईआर में पुस्तकालयों: "स्ट्रट्स-टैग नहीं मिला" त्रुटि त्रुटि डोमेन = NSURLErrorDomain कोड = -1005 "नेटवर्क कनेक्शन खो गया था।" त्रुटि से बाहर निकलें नोड.जेएस न करें SQL: संग्रहीत कार्यविधि में खंड: मूल्यों को कैसे पारित करें "गंभीर त्रुटि के समाधान: '100' के अधिकतम फ़ंक्शन नेस्टिंग स्तर तक पहुंचे, निरस्त!" PHP में कैसे StackPanel के बच्चों को अधिकतम स्थान नीचे की ओर भरने के लिए? jquery .html () बनाम .append () फ़ोकस को पहली टेक्स्टबॉक्स पर सेट करने से jQuery के यूआई संवाद को रोकें सेलेनियम में जावास्क्रिप्ट चल रहा है पायथन का उपयोग कर स्ट्रिंग एक संख्या है, तो मैं कैसे जांच सकता हूं? सी ++ 11 'ऑटो' कीवर्ड स्थिर सदस्यों के लिए काम क्यों नहीं करता?

वक्रार और नवरर्चार के बीच अंतर क्या है?

क्या यह सिर्फ यही है कि nvarchar मल्टीबाइट पात्रों का समर्थन करता है? यदि ऐसा मामला है, तो क्या भंडार की चिंताओं के अलावा varchars का उपयोग करने के लिए वास्तव में कोई बिंदु है?

Solutions Collecting From Web of "वक्रार और नवरर्चार के बीच अंतर क्या है?"

एक nvarchar कॉलम किसी भी यूनिकोड डेटा को स्टोर कर सकता है। एक varchar कॉलम 8-बिट कोडपेज तक सीमित है। कुछ लोगों को लगता है कि varchar का उपयोग किया जाना चाहिए क्योंकि यह कम जगह लेता है मेरा मानना ​​है कि यह सही उत्तर नहीं है। कोडपेज इनकंप्यूटरबैबिलिटी एक दर्द है, और यूनिकोड कोडपेज समस्याओं का इलाज है। आजकल सस्ती डिस्क और मेमोरी के साथ, अब कोड पेजों के साथ समय बर्बाद करने का कोई कारण नहीं है।

सभी आधुनिक ऑपरेटिंग सिस्टम और डेवलपमेंट प्लेटफॉर्म यूनिकोड का आंतरिक रूप से उपयोग करते हैं। varchar बजाय nvarchar का उपयोग करके, हर बार जब आप पढ़ते हैं या डेटाबेस को लिखते हैं तो आप एन्कोडिंग रूपांतरणों को करने से बच सकते हैं। रूपांतरणों को समय लगता है, और त्रुटियों की संभावना होती है और रूपांतरण त्रुटियों से वसूली एक मामूली समस्या है।

यदि आप एएससीआईआई का उपयोग करने वाले किसी एप के साथ इंटरफ़ेस कर रहे हैं, तो मैं अभी भी डेटाबेस में यूनिकोड का उपयोग करने की सिफारिश करेगा। यूनिकोड के साथ ओएस और डेटाबेस मिलान एल्गोरिदम बेहतर काम करेंगे। अन्य प्रणालियों के साथ इंटरफ़ेस करते समय यूनिकोड रूपांतरण समस्याओं से बचा जाता है और आप भविष्य की तैयारी करेंगे। और आप हमेशा यह मान्य कर सकते हैं कि आपके डाटा को 7-बिट एएससीआईआई तक सीमित रखा गया है, जो आपके लिए बनाए रखने वाले लिगेसी सिस्टम के लिए है, यहां तक ​​कि पूर्ण यूनिकोड भंडारण के कुछ लाभों का आनंद लेते हुए।

varchar : परिवर्तनीय-लंबाई, गैर-यूनिकोड वर्ण डेटा डेटाबेस कोलेशन यह निर्धारित करता है कि डेटा का उपयोग किस डेटा पेज को संग्रहीत किया जाता है।

nvarchar : चर-लंबाई यूनिकोड वर्ण डेटा तुलना के लिए डेटाबेस कोलेशन पर निर्भर।

इस ज्ञान के साथ सशस्त्र, जो भी आपके इनपुट डेटा (एएससीआईआई v। यूनिकोड) से मेल खाता है।

मैं हमेशा नर्वचर का उपयोग करता हूं क्योंकि जो कुछ भी मैं इसे किसी भी डेटा को झेलता हूं उसको झेलने के लिए जो कुछ भी बना रहा हूँ। मेरा सीएमएस सिस्टम दुर्घटना के कारण चीनी होता है, क्योंकि मैं नेवर्चार का इस्तेमाल किया। इन दिनों, किसी भी नए अनुप्रयोगों को वास्तव में आवश्यक स्थान की मात्रा से नहीं चिंतित होना चाहिए

यहां आप varchar और nvarchar बीच अंतर देख सकते हैं।

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

संदर्भ: SqlHints.com

नर्वचर और वरचर के बारे में अधिक जानकारी के लिए, यह ब्लॉग पोस्ट देखें।

यह उस पर निर्भर करता है कि ओरेकल कैसे स्थापित किया गया था। स्थापना प्रक्रिया के दौरान, NLS_CHARACTERSET विकल्प सेट किया गया है। आप इसे क्वेरी SELECT value$ FROM sys.props$ WHERE name = 'NLS_CHARACTERSET' साथ ढूंढने में सक्षम हो सकते हैं।

यदि आपका एनएलएस_चैरएक्ट्रेसईटी यूटीएफ 8 की तरह एक यूनिकोड एन्कोडिंग है, तो महान। VARCHAR और NVARCHAR का उपयोग करना बहुत समान है। अब पढ़ना बंद करो, बस इसके लिए जाओ। अन्यथा, या यदि आपके पास ओरेकल के चरित्र सेट पर कोई नियंत्रण नहीं है, तो पढ़ें।

VARCHAR – डेटा को एनएलएस_चैरएकेटरसीटी एन्कोडिंग में संग्रहित किया गया है। यदि एक ही सर्वर पर अन्य डेटाबेस उदाहरण हैं, तो आप उनके द्वारा प्रतिबंधित हो सकते हैं; और इसके विपरीत, क्योंकि आपको सेटिंग साझा करना है ऐसा क्षेत्र कोई भी डेटा संग्रहीत कर सकता है जिसे उस वर्ण सेट का उपयोग करके एन्कोड किया जा सकता है, और कुछ और नहीं । उदाहरण के लिए, यदि चरित्र सेट MS-1252 है, तो आप केवल अंग्रेज़ी अक्षरों, कुछ विशेष प्रकार के अक्षर, और कुछ अन्य (जैसे कि और -) जैसे अक्षर स्टोर कर सकते हैं। आपका आवेदन कुछ स्थानों पर ही उपयोगी होगा, जो कि दुनिया में कहीं भी काम करने में असमर्थ है। इस कारण से, यह बुरा विचार माना जाता है

एनवीआरएआरएआर – डेटा को यूनिकोड एन्कोडिंग में संग्रहित किया गया है। हर भाषा समर्थित है। एक अच्छा विचार।

भंडारण स्थान के बारे में क्या? VARCHAR आमतौर पर कुशल है, चूंकि चरित्र सेट / एन्कोडिंग विशिष्ट लोकेल के लिए कस्टम-डिज़ाइन किया गया था। एनवीआरएआरएआर फ़ील्ड यूटीएफ -8 या यूटीएफ -16 एनकोडिंग में स्टोर करती है, एनएलएसएस सेटिंग पर आधार विडंबना ही पर्याप्त है यूटीएफ -8 "पश्चिमी" भाषाओं के लिए बहुत ही कुशल है, जबकि अभी भी एशियाई भाषाओं का समर्थन करते हुए। यूटीएफ -16 एशियाई भाषाओं के लिए बहुत ही कुशल है, जबकि अभी भी "पश्चिमी" भाषाओं का समर्थन करते हुए यदि भंडारण स्थान के बारे में चिंतित हैं, तो ओआरसीएल को उपयुक्त के रूप में यूटीएफ -8 या यूटीएफ-16 का उपयोग करने के लिए एक एनएलएस सेटिंग चुनें

प्रसंस्करण की गति के बारे में क्या? अधिकांश नए कोडिंग प्लेटफ़ॉर्म यूनिवर्स का उपयोग नेटीव (जावा, .NET, यहां तक ​​कि सी ++ std :: wstring से साल पहले!) करते हैं, इसलिए यदि डाटाबेस फ़ील्ड VARCHAR है तो ओरेकल को प्रत्येक पढ़ने या लिखने पर वर्ण सेटों के बीच परिवर्तित करने के लिए मजबूर करता है, इतना अच्छा नहीं। एनवीआरएआरएआर का उपयोग रूपांतरण से बचा जाता है।

निचला रेखा: एनवीएचएआरएआर का प्रयोग करें! यह सीमाएं और निर्भरता से बचा जाता है, भंडारण स्थान के लिए ठीक है, और प्रदर्शन के लिए आमतौर पर सबसे अच्छा भी होता है।

नर्वचर डेटा को यूनिकोड के रूप में संग्रहीत करता है, इसलिए, यदि आप एक डेटा कॉलम में बहुभाषी डेटा (एक से अधिक भाषा) को स्टोर करने जा रहे हैं तो आपको N संस्करण की आवश्यकता होगी।

मेरे दो सेंट

  1. सही डेटाटेप्स का उपयोग न करने पर अनुक्रमणिका विफल हो सकते हैं:
    SQL सर्वर में: जब आपके पास कोई VARCHAR स्तंभ पर एक सूचकांक होता है और इसे यूनिकोड स्ट्रिंग प्रस्तुत करता है, तो SQL सर्वर अनुक्रमणिका का उपयोग नहीं करता। एक ही बात तब होती है जब आप BigInt को एक अनुक्रमित कॉलम में SmallInt युक्त करते हैं। यहां तक ​​कि अगर BigInt छोटा छोटा होना छोटा है, तो SQL सर्वर सूचकांक का उपयोग करने में सक्षम नहीं है। आपके आसपास के अन्य तरीके से यह समस्या नहीं है (जब एक इंडेक्टेड बिगआईएनटी ओटी एनवीएचआरएआर कॉलम में स्मॉलआईंट या एन्डी-कोड प्रदान करते हैं)।

  2. डेटाटाइज अलग डीबीएमएस (डाटाबेस प्रबंधन सिस्टम) के बीच भिन्न हो सकते हैं:
    पता है कि हर डेटाबेस में थोड़ा भिन्न डेटाटाइप हैं और VARCHAR का मतलब हर जगह एक ही नहीं है। जबकि SQL सर्वर में VARCHAR और NVARCHAR हैं, एक अपाचे / डर्बी डेटाबेस में केवल VARCHAR है और वहां VARCHAR यूनिकोड में है।

मुख्य रूप से नर्वचर स्टोर यूनिकोड वर्ण और varchar गैर-यूनिकोड वर्णों को संग्रहीत करता है।

"यूनिकोड" का मतलब 16-बिट वर्ण एन्कोडिंग योजना है जिसमें कई अन्य भाषाओं जैसे अरबी, हिब्रू, चीनी, जापानी, से वर्णों को एक एकल वर्ण सेट में एन्कोड किया जा सकता है।

इसका मतलब है कि यूनिकोड स्टोर करने के लिए 2 बाइट्स प्रति चरित्र का उपयोग कर रहे हैं और नॉन्यूनिकोड स्टोर करने के लिए केवल एक बाइट प्रति चरित्र का उपयोग करता है। जिसका अर्थ है यूनिकोड की गैर-यूनिकोड की तुलना में स्टोर करने के लिए डबल क्षमता की आवश्यकता है।

आप सही हे। nvarchar यूनिकोड डेटा स्टोर करता है, जबकि varchar एकल-बाइट वर्ण डेटा को स्टोर करता है। भंडारण मतभेदों के अलावा ( nvarchar को दो बार भंडारण अंतरिक्ष के रूप में varchar की आवश्यकता होती है), जिसे आपने पहले ही वर्णित किया है, varchar पर nvarchar को प्राथमिकता देने का मुख्य कारण अंतर्राष्ट्रीयकरण होगा (यानी अन्य भाषाओं में तार संग्रहित करना)।

मैं कहूंगा, यह निर्भर करता है।

यदि आप एक डेस्कटॉप एप्लिकेशन विकसित करते हैं, जहां ओएस यूनिकोड में काम करता है (जैसे कि सभी वर्तमान विंडोज सिस्टम) और भाषा में यूनिकोड (डिफ़ॉल्ट स्ट्रिंग्स को यूनिकोड, जावा या सी # जैसी) का समर्थन करता है, तो एनवर्चार जाएं।

यदि आप एक वेब अनुप्रयोग विकसित करते हैं, जहां स्ट्रिंग UTF-8 के रूप में आते हैं, और भाषा PHP है, जो अभी भी यूनिकोड को मूल रूप से समर्थन नहीं करती है (संस्करण 5.x में), तो वक्रार शायद एक बेहतर विकल्प होगा।

यदि एक एकल बाइट का उपयोग किसी चरित्र को संग्रहीत करने के लिए किया जाता है, तो 256 संभव संयोजन होते हैं, और इस प्रकार आप 256 अलग-अलग वर्णों को बचा सकते हैं। कोलेशन एक पैटर्न है जो वर्णों और नियमों को परिभाषित करता है, जिसके द्वारा उन्हें तुलना और सॉर्ट किया गया है।

1252, जो लैटिन 1 (एएनएसआई) है, सबसे आम है एकल-बाइट वर्ण सेट भी कई भाषाओं द्वारा उपयोग किए जाने वाले सभी वर्णों को संग्रहीत करने के लिए अपर्याप्त हैं। उदाहरण के लिए, कुछ एशियाई भाषाओं में हज़ारों वर्ण हैं, इसलिए उन्हें प्रति चरित्र दो बाइट्स का उपयोग करना होगा।

यूनिकोड मानक

जब एक नेटवर्क में कई कोड पृष्ठों का उपयोग किया जाता है, तो संचार का प्रबंधन करना मुश्किल हो जाता है। चीजों को मानकीकृत करने के लिए, आईएसओ और यूनिकोड कंसोर्टियम ने यूनिकोड की शुरुआत की प्रत्येक अक्षर को स्टोर करने के लिए यूनिकोड दो बाइट का उपयोग करता है यह 65,536 अलग-अलग वर्णों को परिभाषित किया जा सकता है, इसलिए लगभग सभी अक्षर यूनिकोड के साथ कवर किए जा सकते हैं। यदि दो कंप्यूटर यूनिकोड का उपयोग करते हैं, तो प्रत्येक प्रतीक का प्रतिनिधित्व उसी तरीके से किया जाएगा और रूपांतरण की आवश्यकता नहीं होगी – यह यूनिकोड के पीछे का विचार है।

एसक्यूएल सर्वर के चरित्र डेटाइप्स के दो श्रेणियां हैं:

  • गैर-यूनिकोड (वर्ण, वर्चार, और पाठ)
  • यूनिकोड (नचर, नवरचर, और एनटेक्स्ट)

यदि हमें कई देशों से वर्ण डेटा को बचाने की आवश्यकता है, तो हमेशा यूनिकोड का उपयोग करें

nVarchar आपको यूनिकोड वर्णों को संग्रहीत करने में मदद करेगा। यदि आप स्थानीय डेटा को संग्रहीत करना चाहते हैं तो यह जाने का तरीका है

एसक्यूएल सर्वर VARCHAR और NVARCHAR डेटा प्रकार के बीच अंतर का पालन करें। यहां आप एक बहुत ही वर्णनात्मक तरीके से देख सकते हैं।

सामान्य नेवर्चार में डेटा को यूनिकोड के रूप में संग्रहीत करता है, इसलिए, यदि आप एक डेटा कॉलम में बहुभाषी डेटा (एक से अधिक भाषा) को स्टोर करने जा रहे हैं तो आपको N संस्करण की आवश्यकता होगी।

मुझे यहाँ कहना है (मुझे पता है कि मैं खुद को एक स्लेट तक खोलने जा रहा हूं!), लेकिन निश्चित रूप से केवल उसी समय जब NVARCHAR वास्तव में अधिक उपयोगी ( अधिक ध्यान दें) NVARCHAR की तुलना में जब सभी NVARCHAR सभी निर्भर प्रणालियों पर और डेटाबेस के भीतर ही एक ही है …? यदि नहीं तो फिर से रूपांतरण रूपांतरण वैसे भी हो रहा है और इसलिए NVARCHAR रूप में NVARCHAR ही व्यवहार्य बना देता है।

इसे जोड़ने के लिए, कुछ डेटाबेस सिस्टम, जैसे कि SQL सर्वर (2012 से पहले) के लगभग एक पृष्ठ का आकार है। 8K। इसलिए, यदि आप किसी TEXT या NTEXT क्षेत्र की तरह नहीं खोजा जाने योग्य डेटा को संग्रहीत करने के लिए देख रहे हैं तो VARCHAR पूर्ण 8k के मूल्य की जगह प्रदान करता है जबकि NVARCHAR केवल 4k (बाइट्स डबल, स्पेस डबल) प्रदान करता है।

मुझे लगता है, संक्षेप करने के लिए, या तो इसका उपयोग निम्न पर निर्भर है:

  • परियोजना या संदर्भ
  • भूमिकारूप व्यवस्था
  • डाटाबेस सिस्टम

मैंने जवाब पर एक नज़र डाला और कई लोग varchar पर nvarchar का उपयोग करने की सलाह देते हैं, क्योंकि अंतरिक्ष अब कोई समस्या नहीं है, इसलिए यूनिकोड को थोड़ा अतिरिक्त भंडारण के लिए सक्षम करने में कोई नुकसान नहीं है। ठीक है, यह हमेशा सच नहीं होता जब आप अपने कॉलम पर एक इंडेक्स को लागू करना चाहते हैं। एसक्यूएल सर्वर पर 900 बाइट्स की सीमा है, जिस पर आप सूचकांक कर सकते हैं। इसलिए यदि आपके पास एक varchar(900) तो आप अभी भी इंडेक्स कर सकते हैं, लेकिन varchar(901)nvarchar साथ, वर्णों की संख्या आधी हो गई है, ताकि आप nvarchar(450) तक इंडेक्स कर सकें। इसलिए अगर आपको विश्वास है कि आपको nvarchar आवश्यकता नहीं है, तो मैं इसका उपयोग करने की अनुशंसा नहीं करता हूं।

सामान्य तौर पर, डेटाबेस में, मैं आपको आकार की आवश्यकता से चिपकाने की सलाह देता हूं, क्योंकि आप हमेशा विस्तार कर सकते हैं। उदाहरण के लिए, काम पर एक सहयोगी एक बार सोचा था कि स्तंभ के लिए nvarchar(max) का उपयोग करने में कोई नुकसान नहीं है, क्योंकि हमें भंडारण में कोई समस्या नहीं है। बाद में, जब हमने इस कॉलम से एक इंडेक्स को लागू करने की कोशिश की, तो SQL सर्वर ने इसे अस्वीकार कर दिया। अगर, हालांकि, वह भी varchar(5) साथ शुरू किया, हम इस समस्या को हल करने के लिए हमें एक क्षेत्र माइग्रेशन योजना करने की आवश्यकता होगी, जिसके बाद हमें इस बात को बाद में विस्तारित किया जा सकता था।

Varchar(n) और Varchar(n) बीच मुख्य अंतर यह है: यहां छवि विवरण दर्ज करें

Varchar (वैरिएबल- Varchar , गैर-यूनिकोड वर्ण डेटा) का आकार 8000 तक है। 1. यह एक चर लंबाई डेटा प्रकार है

  1. गैर-यूनिकोड वर्णों को संग्रहीत करने के लिए उपयोग किया जाता है

  2. प्रत्येक पात्र के लिए अंतरिक्ष के 1 बाइट पर कब्जा कर लिया

यहां छवि विवरण दर्ज करें

Nvarchar : चर-लंबाई यूनिकोड वर्ण डेटा

1.यह एक चर-लंबाई डेटा प्रकार है I

2. यूनिकोड वर्णों को संग्रहीत करने के लिए उपयोग किया जाता है।

  1. डेटा को यूनिकोड एन्कोडिंग में संग्रहीत किया जाता है। हर भाषा समर्थित है। (उदाहरण के लिए अरबी, जर्मन, हिंदी, आदि भाषाओं आदि)

हालांकि NVARCHAR यूनिकोड को स्टोर किया है, आपको कोलेशन की मदद से भी विचार करना चाहिए, आप NVARCHAR उपयोग कर सकते हैं और अपनी स्थानीय भाषाओं के डेटा को बचा सकते हैं।

बस निम्नलिखित परिदृश्य की कल्पना करें

आपके डीबी का मिलाप फारसी है और आप VARCHAR(10) डेटाटाइप में 'علی' (अली की फारसी लेखन) जैसे मूल्य को बचाते हैं। कोई समस्या नहीं है और डीबीएमएस केवल इसे स्टोर करने के लिए तीन बाइट का उपयोग करता है।

हालांकि, यदि आप अपने डेटा को दूसरे डेटाबेस में स्थानांतरित करना चाहते हैं और सही परिणाम देखें तो आपके गंतव्य डेटाबेस को इस उदाहरण के साथ फ़ारसी के लक्ष्य के समान मिलान करना होगा।

यदि आपका लक्ष्य अलग है, तो आप लक्ष्य डेटाबेस में कुछ प्रश्न चिह्न (?) देखते हैं।

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

मेरा मानना ​​है कि डिजाइन अलग-अलग हो सकता है यह पर्यावरण पर निर्भर करता है जो आप काम करते हैं।

nvarchar उपयोग करने के लिए सुरक्षित है varchar तुलना करने के लिए हमारी कोड त्रुटि मुक्त (प्रकार बेमेल) बनाने के लिए क्योंकि nvarchar यूनिकोड वर्ण भी अनुमति देता है इसके अलावा एक SQL सर्वर क्वेरी की स्थिति में, मुझे संदेह है कि मैं कुछ समय के भीतर आया हूं = SQL सर्वर में अपवाद फेंकता है लेकिन ऐसा नहीं है। यह मेरे लिए सबसे बड़ा कारण है।