Co oznacza sortowanie w języku SQL i do czego służy?
Co oznacza sortowanie w języku SQL i do czego służy?
Odpowiedzi:
Sortowanie można po prostu traktować jako porządek sortowania.
W języku angielskim (i jest to dziwny kuzyn, Amerykanin) zestawianie może być dość prostą sprawą polegającą na porządkowaniu według kodu ASCII.
Kiedy już opanujesz te dziwne języki europejskie ze wszystkimi ich akcentami i innymi cechami, nastąpi zmiana sortowania. Na przykład, chociaż różne akcentowane formy a
mogą istnieć w różnych punktach kodowych, może być konieczne posortowanie wszystkich tak, jakby były tą samą literą.
e
, ë
, é
, ě
, i è
może mieć różne litery na potrzeby zamawiającego (ale być może ta sama litera, szukając, do cholery te szalone Europejczyków;)).
42
literami, 15
w tym ze znakami diakrytycznymi?
where st= 'aaa'
?
Poza tym, że „litery akcentowane są sortowane inaczej niż te bez akcentu” w niektórych językach zachodnioeuropejskich, należy wziąć pod uwagę grupy liter, które czasami są również sortowane inaczej.
Tradycyjnie w języku hiszpańskim „ch” uważano za literę samą w sobie, podobnie jak „ll” (oba reprezentują jeden fonem), więc lista byłaby sortowana w następujący sposób:
Zauważ, że wszystkie słowa zaczynające się od pojedynczego c idą w parze, z wyjątkiem słów zaczynających się od ch, które idą po nich, to samo ze słowami rozpoczynającymi się od ll, które występują po wszystkich słowach zaczynających się od jednego l . To jest kolejność, którą zobaczysz w starych słownikach i encyklopediach, czasami nawet dzisiaj przez bardzo konserwatywne organizacje.
Królewska Akademia Języka zmieniła to, aby ułatwić hiszpańskiemu przystosowanie się do świata komputerów. Niemniej jednak ñ jest nadal uważane za inną literę niż n i występuje po niej, a przed o . Więc to jest poprawnie uporządkowana lista:
Wybierając prawidłowe sortowanie, wszystko to zrobisz automatycznie :-)
Reguły, które mówią, jak porównywać i sortować ciągi: kolejność liter; czy sprawa ma znaczenie, czy znaki diakrytyczne mają znaczenie itp.
Na przykład, jeśli chcesz, aby wszystkie litery były różne (powiedzmy, jeśli przechowujesz nazwy plików w UNIX
), użyj UTF8_BIN
sortowania:
SELECT 'A' COLLATE UTF8_BIN = 'a' COLLATE UTF8_BIN
---
0
Jeśli chcesz zignorować różnice w wielkości liter i znakach diakrytycznych (na przykład w wyszukiwarce), użyj UTF8_GENERAL_CI
sortowania:
SELECT 'A' COLLATE UTF8_GENERAL_CI = 'ä' COLLATE UTF8_GENERAL_CI
---
1
Jak widać, to zestawienie (reguła porównania) uwzględnia wielkie A
i małe litery za ä
tę samą literę, ignorując wielkość liter i różnice w znakach diakrytycznych.
Sortowanie definiuje sposób sortowania i porównywania wartości ciągów
Na przykład określa, jak sobie z tym poradzić
äàa
itp.)Aa
)cote < côte < coté < côté.
cote < coté < côte < côté
Sortowanie oznacza przypisanie jakiejś kolejności do znaków w alfabecie, powiedzmy, ASCII lub Unicode itp.
Załóżmy, że masz 3 znaki w swoim alfabecie - {A, B, C}. Możesz zdefiniować dla niego kilka przykładowych sortowań, przypisując wartości całkowite do znaków
W rzeczywistości możesz zdefiniować n! zestawienia na alfabecie o rozmiarze n. Biorąc pod uwagę taką kolejność, różne procedury sortowania, takie jak sortowanie łańcuchów LSD / MSD, używają go do sortowania łańcuchów.
Odniesienie zaczerpnięto z tego artykułu: Sortowanie to zestaw reguł służących do porównywania znaków w zestawie znaków. Orzekł również o sortowaniu znaków, a właściwa kolejność dwóch znaków różni się w zależności od języka. Funkcja Collation porównała dwa łańcuchy, na przykład, jeśli jedno słowo jest większe od drugiego, i odpowiednio je posortowała.
Jeśli używasz zestawu znaków „latin1”, możesz użyć sortowania „latin1_swedish_ci”.
Musisz wybrać prawidłowe sortowanie, ponieważ niewłaściwe sortowanie może wpłynąć na wydajność bazy danych.
http://en.wikipedia.org/wiki/Collation
Sortowanie to zestawienie pisemnych informacji w standardowe zamówienie. (...) Algorytm zestawiania, taki jak algorytm zestawiania Unicode, definiuje kolejność poprzez proces porównywania dwóch podanych ciągów znaków i decydowania, które powinny występować przed drugim.