Harmanlama ne anlama geliyor?


138

SQL'de harmanlama ne anlama geliyor ve ne anlama geliyor?


2
@gbn: Bu arada, harmanlama hem MSSQL hem de MySQL'de çok benzer bir şekilde çalışır.
Piskvor binadan ayrıldı


@Piskvor: mySql harmanlama seçeneklerinden bazıları (ör. UTF8) MSSQL'de mevcut değildir: msdn.microsoft.com/en-us/library/ms144250.aspx
CB

@ CB: Bunu inkar etmemek; benzerlik desteklenen (un) karakter kümelerinden daha derine iner.
Piskvor

Yanıtlar:


60

Harmanlama basitçe sıralama düzeni olarak düşünülebilir.

İngilizcede (ve garip kuzeni, Amerikan), harmanlama ASCII kodu ile sipariş vermeyi içeren oldukça basit bir konu olabilir.

Tüm aksanları ve diğer özellikleriyle bu garip Avrupa dillerine girdikten sonra, harmanlama değişir. Örneğin, farklı aksanlı biçimleri afarklı kod noktalarında mevcut olsa da , hepsinin aynı harfmiş gibi sıralanması gerekebilir.


4
Farklı aksanları genellikle onlar sanki sıralanması gerekmez anlamına farklı harfler - örneğin e, ë, é, ě, ve è belki sipariş amacıyla farklı harfler olmak (ancak muhtemelen aynı harf ararken, o deli Avrupalıları kahretsin;)).
Piskvor

1
@Piskvor: En bilgilerinde koordinatları ile bir alfabe kullanarak belirli bir ülkeden göstermiyorsa 42, mektuplar 15onları özel harfleri sahip?
Quassnoi

4
@Quassnoi: Evet, ve? Deli olmadığım herhangi bir yere mi ima ediyorum? ; o) (Unicode için Tanrı'ya şükürler olsun, hala ülkeye özgü karakter
kümeleriyle

3
@Piskvor: Üzgünüm, üzgünüm, sen delisin! :)
Quassnoi

Sadece sıralama için where st= 'aaa'mi yoksa aynı zamanda için mi?
Royi Namir

42

Bazı Batı Avrupa dillerinde "aksanlı harfler aksasız olanlardan farklı sıralanır" yanında, bazen farklı sıralanan harf gruplarını da dikkate almalısınız .

Geleneksel olarak, İspanyolcada "ch", "ll" (her ikisi de tek bir foneyi temsil eder) ile aynı olan, kendi başına bir harf olarak kabul edildi, bu nedenle bir liste şu şekilde sıralanır:

  • caballo
  • cinco
  • coche
  • charco
  • çikolata
  • Chueco
  • taban taşı
  • (...)
  • lámpara
  • luego
  • llanta
  • lluvia
  • madera

Tek başlayarak Bildirimi tüm kelimeler c ile başlayan kelimelerin dışında birlikte gidip ch gitmek sonra aynı onları, ll tek ile başlayan tüm kelimeleri peşine kelimeleri başlatılması l . Bu, eski sözlüklerde ve ansiklopedilerde, bazen bugün bile çok muhafazakar örgütler tarafından göreceğiniz düzendir.

Kraliyet Dil Akademisi, İspanyolların bilgisayar dünyasında kalmasını kolaylaştırmak için bunu değiştirdi. Bununla birlikte, ñ hala farklı bir harf olarak kabul edilir n ve gider sonra ona, ondan önce o . Yani bu doğru sıralı bir liste:

  • Namibya
  • número
  • nandu
  • Ñú
  • obra
  • ojo

Doğru harmanlamayı seçerek, tüm bunları sizin için otomatik olarak yaparsınız :-)


Tamam, bu yüzden bir sıralama doğru sıralama için oldukça yararlıdır, ancak karşılaştırmalar için hala yararlı mı? Örneğin, 'ñandú' ve 'nandu' nun pratik nedenlerle eşit olmasını istiyorum ... Harmanlama mekanizması bana bu görevde yardımcı olabilir mi?
CB

@CB: Bir sütunun değerinin 'Aéreo' ve SQL S.'ye eşit olduğu tüm satırları seçmek gibi bir şey ifade ediyorsanız, 'aereo', 'aereó', 'AerEO' ve benzeri satırları döndürür - evet, yalnızca bir sorgu yapabilir. Bununla birlikte, bu harmanlama veritabanının yerel olanından çok farklıysa performans sorunlarınız olacaktır. Ve geçici tablolar kullanıyorsanız, tempdb'nin harmanlamasını da takip etmelisiniz ... Ama bunu yapabilirsiniz.
Joe Pineda

Bu durumda, lütfen biraz daha açıklayabilir misiniz? Özellikle, "NANDU kelimesi NEREDE kelimesinin NEREDE testinden kelimeyi SEÇİN" doğrudan sorgusu bunu yapabilir mi? Ve çalışması için hangi harmanlamayı kullanmalıyım? (Sadece aksanlarla değil, aksan işaretleri hakkında endişelendiğimi unutmayın ...)
CB

2
@CB harmanlamanın 'AI' veya 'AS' kısmına bir göz atın (Accent Insensitive ve Accent Sensitive).
Dustin Kendall

14

Dizelerin nasıl karşılaştırılacağını ve sıralanacağını anlatan kurallar: harfler sırası; davanın önemli olup olmadığı, aksanların önemli olup olmadığı vb.

Örneğin, tüm harflerin farklı olmasını istiyorsanız (örneğin dosya adlarını depolarsanız UNIX) UTF8_BINharmanlama kullanırsınız :

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

---
0

Büyük / küçük harf ve aksan farklılıklarını yok saymak istiyorsanız (örneğin, bir arama motoru için) UTF8_GENERAL_CIharmanlama kullanırsınız :

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

---
1

Gördüğünüz gibi, bu harmanlama (karşılaştırma kuralı) sermaye gördüğü Ave lowecase äaynı mektubu, görmezden durumda ve aksan farklılıkları.


10

Harmanlama, dize değerlerini nasıl sıraladığınızı ve karşılaştırdığınızı tanımlar

Örneğin, nasıl başa çıkılacağını tanımlar

  • aksan ( äàavb.)
  • vaka ( Aa)
  • dil bağlamı:
    • Fransızca harmanlamada, cote < côte < coté < côté.
    • SQL Server Latin1 varsayılanında, cote < coté < côte < côté
  • ASCII sıraları (ikili harmanlama)

5

Harmanlama, Alfabedeki karakterlere, örneğin ASCII veya Unicode vb.

Alfabenizde 3 karakter bulunduğunu varsayalım - {A, B, C}. Karakterlere integral değerler atayarak bunun için bazı örnek harmanlamalar tanımlayabilirsiniz

  1. Örnek 1 = {A = 1, B = 2, C = 3}
  2. Örnek 2 = {C = 1, B = 2, A = 3}
  3. Örnek 3 = {B = 1, C = 2, A = 3}

Nitekim n tanımlayabilirsiniz! n büyüklüğünde bir alfabe üzerinde harmanlamalar Böyle bir düzen göz önüne alındığında, LSD / MSD dize türlerini beğenen farklı sıralama rutinleri dizeleri sıralama için kullanır.


3

Harmanlama, verilerinizin nasıl sıralanacağını ve karşılaştırılacağını belirler. Uluslararasılaşma açısından çok önemlidir, örneğin Japonca kanji'yi nasıl sıralıyorsunuz?

Eğer google harmanlama ve sql sunucusu Eğer tartışan makaleleri bol bulacaksınız!


3

Bu makaleden başvuru alınmıştır: Harmanlama, karakter kümesindeki karakterleri karşılaştırmak için kullanılan bir dizi kuraldır. Ayrıca karakterlerin sıralanması için karar vermiştir ve iki karakterin uygun sırası dilden dile değişir. Bir Harmanlama, bir sözcük diğerinden daha büyükse, iki dizeyi karşılaştırır ve buna göre sıralar.

“Latin1” Karakter kümesi kullanıyorsanız “latin1_swedish_ci” Harmanlama özelliğini kullanabilirsiniz.

Yanlış harmanlama veritabanı performansınızı etkileyebileceğinden doğru harmanlamayı seçmelisiniz.


2

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

Harmanlama, yazılı bilgilerin standart bir düzene birleştirilmesidir. (...) Unicode harmanlama algoritması gibi bir harmanlama algoritması , verilen iki karakter dizesini karşılaştırma ve hangisinin diğerinden önce gelmesi gerektiğine karar verme sürecinde bir sıra tanımlar.



1
Bu makale gerçekten her şeyi açıklıyor.
Joe Pineda

3
@Joe Pineda. Belki de her şeyi açıklıyor ama okuyucu hepsini bilmek istiyor? Ya da okuyucunun, harmanlamanın en temel ve yaygın olarak kullanılan unsurlarını ve işlevlerini kapsayan kısa ve güvenilir bir cevap istemesi mümkün müdür, böylece onu hızlı bir şekilde okuyabilir ve hangi görev, ödev veya proje üzerinde soruna yol açmışsa çalışmaya devam edebilir ile başlar?
cfwschmidt

2
@TJCrowder Bu ironi takdir

1

Harmanlama, SQL sunucusunun metnin nasıl sıralanacağına ve karşılaştırılacağına nasıl karar verdiğidir.

Bkz. MSDN .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.