टक्कर का मतलब क्या है?


138

एसक्यूएल में कोलाज का क्या मतलब है, और यह क्या करता है?


2
@ जीबीएन: संयोग से, टकराव MSSQL और MySQL दोनों में बहुत समान तरीके से काम करता है।
पिस्कवर ने 13


@Piskvor: कुछ MySql कॉलेशन ऑप्शंस को छोड़कर (जैसे, UTF8) MSSQL में उपलब्ध नहीं हैं: msdn.microsoft.com/en-us/library/ms144250.aspx
CB

@CB: इससे इनकार नहीं; समानता गहरे (अन) समर्थित चारसेट से अधिक गहराई तक जाती है।
पिस्कोर ने

जवाबों:


60

Collation को केवल क्रम क्रम के रूप में सोचा जा सकता है।

अंग्रेजी में (और यह अजीब है चचेरे भाई, अमेरिकी), एएससीआईआई कोड द्वारा ऑर्डर से मिलकर एक बहुत ही साधारण मामला हो सकता है।

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


4
अलग लहजे आमतौर पर इसका मतलब यह है कि वे क्रमबद्ध करना रूप में यदि वे थे की जरूरत है विभिन्न पत्र - जैसे e, ë, é, ě, और è हो सकता है आदेश के प्रयोजनों के लिए अलग पत्र होना (लेकिन संभवतः इसी पत्र खोजने में आपको, उन पागल गोरों लानत;))।
पिस्कोर ने

1
@ चिह्नक: आपकी जानकारी में निर्देशांक नहीं हैं जो अक्षरों के साथ वर्णमाला का उपयोग करते हुए एक विशेष देश की ओर इशारा करते हैं 42, 15उनमें से एक के पास बाल चिकित्सा है ?
क्वासोई 13

4
@Quassnoi: हाँ, और? क्या मैं कहीं भी यह आरोप लगा रहा हूं कि मैं पागल नहीं हूं? ; ओ) (हालांकि यूनिकोड के लिए भगवान का शुक्र है, मैं पागल हो सकता हूँ अगर मैं अभी भी राष्ट्र-विशिष्ट
वर्ण के

3
@ तस्वीर: क्षमा करें, क्षमा करें, आप पूरी तरह से पागल हैं! :)
क्वासोनी

यह केवल सॉर्ट के लिए है या इसके लिए भी है where st= 'aaa'?
रॉय नमिर

42

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

परंपरागत रूप से, स्पैनिश में, "ch" को अपने आप में एक अक्षर माना जाता था, "ll" के साथ भी (दोनों एक एकल स्वर का प्रतिनिधित्व करते हैं), इसलिए एक सूची इस तरह से मिल जाएगी:

  • caballo
  • cinco
  • coche
  • Charco
  • चॉकलेट
  • chueco
  • कुरसी
  • (...)
  • Lampara
  • luego
  • llanta
  • lluvia
  • Madera

सूचना सभी शब्दों एकल के साथ शुरू सी , एक साथ जाना के साथ शुरू शब्द को छोड़कर ch जो जाना के बाद उन्हें, के साथ एक ही डालूँगा शब्द -starting जो एक एकल के साथ शुरू सभी शब्दों के बाद जाना एल । यह वह आदेश है जो आप पुराने शब्दकोशों और विश्वकोषों में देखेंगे, कभी-कभी आज भी बहुत रूढ़िवादी संगठनों द्वारा।

रॉयल एकेडमी ऑफ द लैंग्वेज ने इसे बदलकर स्पेनिश के लिए कंप्यूटिंग की दुनिया में आसानी से जगह बनाई। फिर भी, एन को अभी भी n की तुलना में एक अलग अक्षर माना जाता है और इसके बाद और से पहले चला जाता है । तो यह एक सही ढंग से आदेशित सूची है:

  • नामीबिया
  • Número
  • नंदू
  • Nu
  • obra
  • ओजो

सही कॉलेशन का चयन करके, आप स्वचालित रूप से :-)


ठीक है, इसलिए सही सॉर्टिंग के लिए एक कोलाज काफी उपयोगी है, लेकिन क्या यह तुलना के लिए अभी भी उपयोगी है? उदाहरण के लिए, मैं andandu ’और 'nandu’ को व्यावहारिक कारणों से बराबरी पर लाना चाहूंगा ... क्या इस कार्य के साथ collation तंत्र मेरी मदद कर सकता है?
CB

@CB: यदि आप किसी ऐसी चीज का चयन करते हैं, जिसमें सभी पंक्तियों का चयन किया जाता है, जहां एक कॉलम का मूल्य 'Aéreo' के बराबर होता है और SQL S. 'aereo', 'aereó', 'AerEO' जैसी पंक्तियों को और जैसे - हां, सिर्फ एक के लिए एक विशिष्ट टकराव सेट करता है क्वेरी कर सकते हैं। आपके पास प्रदर्शन के मुद्दे होंगे, हालांकि, यदि यह कोलाज डेटाबेस के मूल निवासी से बहुत अलग है। और यदि आप अस्थायी टेबलों का उपयोग करते हैं, तो आपको टेम्पर्डब के टकराने का भी ध्यान रखना चाहिए ... लेकिन आप इसे कर सकते हैं।
जो पिनेडा

उस मामले में, क्या आप कृपया थोड़ा और समझा सकते हैं? विशेष रूप से, सीधा प्रश्न "टेस्ट से शब्द का चयन करें जहां शब्द 'नंदू' का चयन कर सकेगा? और यह काम करने के लिए मुझे किस कोलाज का उपयोग करना चाहिए? (ध्यान दें कि मैं विशेषक चिह्नों के बारे में चिंतित हूं, और न केवल उच्चारण ...)
सीबी

2
@ सीबी 'एआई' या 'ए एस' महाविद्यालय के हिस्से (एक्सेंट इनसेटिव एंड एक्सेंट सेंसिटिव) पर एक नज़र डालते हैं।
डस्टिन केंडल

14

नियम जो बताते हैं कि स्ट्रिंग्स की तुलना और छँटाई कैसे करें: अक्षर क्रम; चाहे मामला मायने रखता हो, चाहे विकृति विज्ञान आदि।

उदाहरण के लिए, यदि आप चाहते हैं कि सभी अक्षर अलग-अलग हों (जैसे, यदि आप फ़ाइल नाम स्टोर करते हैं UNIX), तो आप UTF8_BINटकराव का उपयोग करते हैं :

SELECT  'A' COLLATE UTF8_BIN = 'a' COLLATE UTF8_BIN

---
0

यदि आप केस और डायकट्रिक्स अंतर को अनदेखा करना चाहते हैं (कहते हैं, एक खोज इंजन के लिए), तो आप UTF8_GENERAL_CIटकराव का उपयोग करते हैं :

SELECT  'A' COLLATE UTF8_GENERAL_CI = 'ä' COLLATE UTF8_GENERAL_CI

---
1

जैसा कि आप देख सकते हैं, यह Aटकराव (तुलना नियम) पूंजी पर विचार करता है और äएक ही पत्र को कम करता है, मामले और विशेष अंतरों की अनदेखी करता है।


10

Collation परिभाषित करता है कि आप स्ट्रिंग मानों को कैसे सॉर्ट और तुलना करते हैं

उदाहरण के लिए, यह परिभाषित करता है कि कैसे निपटें

  • उच्चारण (äàa आदि)
  • मामला (Aa )
  • भाषा संदर्भ:
    • एक फ्रांसीसी टकराव में, cote < côte < coté < côté.
    • SQL सर्वर लैटिन 1 डिफ़ॉल्ट में, cote < coté < côte < côté
  • ASCII सॉर्ट (एक बाइनरी कॉलेशन)

5

Collation का अर्थ वर्णों के लिए कुछ आदेश असाइन करना है, जैसे कि, ASCII या यूनिकोड आदि।

मान लीजिए कि आपके वर्णमाला में 3 वर्ण हैं - {A, B, C}। आप पात्रों के लिए अभिन्न मूल्यों को निर्दिष्ट करके इसके लिए कुछ उदाहरण कोलाज को परिभाषित कर सकते हैं

  1. उदाहरण 1 = {A = 1, B = 2, C = 3}
  2. उदाहरण 2 = {C = 1, B = 2, A = 3}
  3. उदाहरण 3 = {B = 1, C = 2, A = 3}

तथ्य की बात के रूप में, आप n को परिभाषित कर सकते हैं! आकार एन की वर्णमाला पर टकराव। इस तरह के आदेश को देखते हुए, एलएसडी / एमएसडी स्ट्रिंग को अलग-अलग सॉर्टिंग रूट पसंद करते हैं।


3

Collation निर्धारित करता है कि आपका डेटा कैसे सॉर्ट किया गया और तुलना की गई। यह बहुत बार इंटर्नैजिनेशन के संबंध में महत्वपूर्ण है, उदाहरण के लिए आप जापानी कांजी को कैसे सॉर्ट करते हैं?

यदि आप google collation और sql सर्वर से मिलेंगे, तो आपको इस पर चर्चा करने वाले बहुत सारे लेख मिलेंगे!


3

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

यदि आप "लेट 1" अक्षर सेट का उपयोग कर रहे हैं, तो आप "लेट 1_स्वादिस्टि_सी" कॉलेशन का उपयोग कर सकते हैं।

आपको सही कॉलेशन चुनना होगा क्योंकि गलत कॉलेशन आपके डेटाबेस प्रदर्शन को प्रभावित कर सकता है।


2

http://en.wikipedia.org/wiki/Collation

Collation एक मानक क्रम में लिखित जानकारी का संयोजन है। (...) यूनिकोड कॉलेशन एल्गोरिथ्म जैसे एक कोलाज एल्गोरिथ्म दो दिए गए वर्ण तारों की तुलना करने और निर्णय लेने की प्रक्रिया के माध्यम से एक आदेश को परिभाषित करता है जो दूसरे से पहले आना चाहिए।



1
यह लेख वास्तव में यह सब समझाता है।
जो पिनाडा 15

3
@ जो पिनेडा। शायद यह वास्तव में यह सब समझाता है, लेकिन क्या पाठक यह सब जानना चाहते हैं? या क्या यह संभव है कि पाठक केवल संक्षिप्त, विश्वसनीय उत्तर चाहता है जो सबसे मौलिक और आमतौर पर उपयोग किए जाने वाले तत्वों और टकराव के कार्यों को कवर करता है, इसलिए वह इसे जल्दी से पढ़ सकता है और जो भी कार्य, असाइनमेंट या प्रोजेक्ट पर काम कर रहा है, वह प्रश्न को जन्म देता है से शुरू?
cfwschmidt

2
@TJCrowder मैं इसमें विडंबना की सराहना करता हूं

1

टकराव यह है कि एसक्यूएल सर्वर कैसे पाठ को क्रमबद्ध और तुलना करने का निर्णय लेता है।

MSDN देखें ।

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