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


24

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


जवाबों:


27

चरित्र सेट प्रतीकों की एक सूची है। आप की तुलना ASCII के लिए latin1 , साथ latin1 आप सभी अमेरिकी शब्द क्योंकि लिखने के लिए सक्षम हो जाएगा latin1 सभी शामिल हैं ASCII वर्ण, जो किसी भी अंग्रेजी शब्द लिखने के लिए पर्याप्त हैं। इसके विपरीत, ASCII के साथ आप पश्चिमी यूरोपीय विशिष्ट भाषाओं के सभी शब्द नहीं लिख पाएंगे, क्योंकि उदाहरण के लिए ',', 'ë', 'õ', 'Ñ' जैसे अक्षर गायब हैं।

कोलाज पात्रों के बीच तुलना के बारे में है। यह एक चरित्र सेट के पात्रों की तुलना करने के लिए नियमों के एक सेट को परिभाषित करता है।

MySQL में, कोलाज अक्सर एक भाषा से संबंधित होते हैं (जैसे 'latin1_swiki_ci', 'latin1_german1_ci', आदि)। जब आप एक चुनिंदा क्वेरी का आदेश देते हैं, तो 'ओ' से शुरू होने वाला एक शब्द दो शब्दों के बीच 'ओ' और 'पी' से कुछ भाषाओं में (कुछ टकरावों के साथ) रखा जाएगा। लेकिन एक और टकराव के साथ, इस चरित्र को पूरी तरह से अंत में रखा जा सकता है, जो परिणामस्वरूप चयन को अलग बनाता है।


धन्यवाद, इसकी लगभग अब स्पष्ट है। इसलिए मुझे लगता है कि बहुभाषी साइट की योजना बनाते समय टकराव का चयन एक गंभीर चिंता है? उदाहरण के लिए, यदि टकराव _ latin1_swiki_ci ’है, तो मुझे यूनिकोड भाषाओं से निपटने के दौरान अपेक्षित परिणाम नहीं मिलेंगे।
शमीर

1
मैं आपको यूनिकोड के लिए जाने का सुझाव दूंगा या आपको कुछ बिंदु पर कुछ परेशानी होगी (उदाहरण के लिए भाषाविज्ञान)। टकराना उपयोगकर्ता की भाषा पर निर्भर करेगा। यदि आप एक बहुभाषी उपकरण रखना चाहते हैं तो यह आपके लिए उपयोगी है।
deadalnix

6

पिछले उत्तर के रूप में, वर्ण सेट वर्णों (अक्षरों, संख्याओं, विचारधाराओं आदि) का एक समूह है जो एक संख्या को सौंपा गया है; उन्हें देखने में सक्षम होने के लिए, आपके पास फ़ॉन्ट (छोटे "चित्र" जो हम पढ़ते हैं) होना चाहिए। वे लैटिनएक्स का उपयोग कर महत्वपूर्ण थे, क्योंकि प्रत्येक एक्स के लिए, एक ही संख्या (बाइट) एक अलग चरित्र को संदर्भित कर सकती थी।

आजकल एन्कोडिंग का चयन करना अधिक महत्वपूर्ण है: मानक यूटीएफ -8 है, यूनिकोड का सबसे सफल प्रतिनिधित्व (एएससीआईआई के साथ लेकिन सभी भाषा, यहां तक ​​कि चीनी और जापानी को शामिल करने के लिए लचीला) और डब्ल्यू 3 सी मानक। दूसरे शब्दों में, इसमें सभी वर्ण सेट शामिल हैं।

Collation: यह एक पुराने ज़माने का शब्द है, जो लैटिन भाषा से लिया गया है। इसका अर्थ है: अंतर (त्रुटियों या परिवर्तनों) को खोजने के लिए मूल के साथ एक प्रति (पांडुलिपि) की तुलना करें। अतीत में यह बहुत उपयोगी था, लेकिन अब यह लगभग एक पुरातनवाद है क्योंकि हमारे दस्तावेज़ और किताबें कंप्यूटर का उपयोग करके लिखी जाती हैं और प्रतिलिपि हमेशा मूल के समान होती है। उदाहरण: इतालवी में (लैटिन से प्राप्त) क्रिया "कोलाज़ियन" है, लेकिन यह शब्दकोशों में है और कोई भी इसका उपयोग नहीं करता है।

तो, टकराव तुलना संचालकों के व्यवहार को परिभाषित करता है: =,>, <, <=,> = ...

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

  • "बिन" टकराव सबसे सख्त हैं: SELECT "b" = "B" => FALSE

  • "ci" collations केस संवेदी नहीं है: SELECT "b" = "B" => TRUE

  • "सामान्य" कुछ अंतरों को अनदेखा करते हैं: "a =" à "=> TRUE चुनें

  • अन्य एक या अधिक भाषाओं के लिए विशिष्ट हैं। उदाहरण "स्वीडिश" (मुझे नहीं पता कि क्यों स्वीडिश अक्सर एक डिफ़ॉल्ट है)

मैं अभी भी एक ऐसी वेबसाइट की खोज कर रहा हूँ जहाँ हर कोलाजेशन के व्यवहार का विस्तार से वर्णन किया गया हो ... वे उदाहरण मेरे अनुभव के कारण हैं।

[१] http://www.olcot.co.uk/sql-blogs/revised-difference-between-collation-sql_latin1_general_cp1_ci_as-and-live1_general_ci_as


1
MySQL के कुछ बिट्स में सिन डिफ़ॉल्ट है। इसकी विरासत जब MySQL स्वीडन में एक छोटी टीम द्वारा '95
क्रिस वुड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.