Jaka jest różnica między układaniem a zestawem znaków?

24

Mam ogólne pytanie dotyczące baz danych. Zazwyczaj używamy terminu sortowania w bazach danych. Chciałbym wiedzieć, czym różni się od zestawu znaków. Sądzę, że sortowanie jest podzbiorem zestawu znaków. Jeśli to prawda, jaki jest cel wielokrotnego sortowania w zestawie znaków.

Wstydnik
źródło
Zobacz także stackoverflow.com/questions/341273/…
Sanghyun Lee

Odpowiedzi:

27

Zestawy znaków to lista symboli. Jeśli porównasz ASCII z latin1 , z latin1 będziesz mógł pisać wszystkie amerykańskie słowa, ponieważ latin1 zawiera wszystkie znaki ASCII , które wystarczają do napisania dowolnego angielskiego słowa. Wręcz przeciwnie, w ASCII nie będziesz mógł pisać wszystkich słów w zachodnioeuropejskich językach, ponieważ na przykład brakuje znaków takich jak „À”, „ë”, „õ”, „Ñ”.

Sortowanie dotyczy porównywania znaków. Definiuje zestaw reguł do porównywania znaków z zestawu znaków.

W MySQL sortowanie jest często powiązane z jednym językiem (np. „Latin1_swedish_ci”, „latin1_german1_ci” itp.). Kiedy zamawiasz wybrane zapytanie, słowo zaczynające się na „ö” zostanie umieszczone między dwoma słowami zaczynającymi się na „o” i „p” w niektórych językach (z pewnymi zestawieniami). Ale z innym zestawieniem postać ta może zostać umieszczona całkowicie na końcu, co powoduje, że wynikowy wybór jest inny.

uloBasEI
źródło
Dzięki, jest już prawie jasne. Więc myślę, że wybór sortowania jest poważnym problemem podczas planowania witryny wielojęzycznej? Na przykład, jeśli zestawienie to „latin1_swedish_ci”, nie będę oczekiwać oczekiwanego rezultatu podczas pracy z językami Unicode.
Shameer
1
Sugerowałbym, abyś poszedł na Unicode, bo w pewnym momencie będziesz mieć problemy (np. Języki azjatyckie). Zestawienie będzie zależeć od języka użytkownika. Jest to coś, z czym należy zachować ostrożność, jeśli chcesz mieć wielojęzyczne narzędzie.
deadalnix
6

Jak poprzednia odpowiedź, zestaw znaków jest zestawem znaków (liter, cyfr, ideogramów itp.) Przypisanych do liczby; aby je zobaczyć, musisz mieć czcionkę (czytamy małe „zdjęcia”). Były ważne przy użyciu LatinX, ponieważ dla każdego X ta sama liczba (bajt) może odnosić się do innego znaku.

W dzisiejszych czasach ważniejsze jest wybranie kodowania: standardem jest UTF-8, najskuteczniejsza reprezentacja Unicode (kompatybilna z ASCII, ale tak elastyczna, aby obejmować wszystkie języki, nawet chińskie i japońskie) oraz standard W3C. Innymi słowy, obejmuje wszystkie zestawy znaków.

Zestawienie: jest to staromodne słowo pochodzące z łaciny. Oznacza to: porównaj kopię (rękopis) z oryginałem, aby znaleźć różnice (błędy lub zmiany). W przeszłości było to bardzo przydatne, ale teraz jest to prawie archaizm, ponieważ nasze dokumenty i książki są pisane za pomocą komputerów, a kopia jest zawsze identyczna z oryginałem. Przykład: w języku włoskim (pochodzi z łaciny) istnieje czasownik „collazionare”, ale znajduje się w słownikach i nikt go nie używa.

Tak więc zestawienie określa zachowanie operatorów porównania: =,>, <, <=,> = ...

Oczywiście operatory te są używane do decydowania, czy dwa ciągi są takie same, czy też słowo jest „większe” niż inne, co jest bardzo ważne, jeśli chcemy sortować. Litery nie są w tej samej kolejności dla każdego języka, więc słowo może być większe niż inne, używając sortowania, ale nie innego. Zobacz [1] praktyczny przykład.

  • zestawienia „bin” są najbardziej ścisłe: SELECT „b” = „B” => FALSE

  • w sortowaniu „ci” nie jest rozróżniana wielkość liter: SELECT „b” = „B” => PRAWDA

  • „ogólne” zwykle ignorują pewne różnice: WYBIERZ „a” = „à” => PRAWDA

  • inne są specyficzne dla jednego lub więcej języków. Przykład „szwedzki” (nie wiem, dlaczego szwedzki jest często domyślny)

Wciąż szukam strony internetowej, w której szczegółowo opisano zachowanie każdego zestawienia ... przykłady te wynikają z mojego doświadczenia.

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

Francesco
źródło
1
szwedzki jest nadal domyślny w niektórych bitach MySQL. Jego spuścizna od czasu, gdy MySQL został utworzony przez mały zespół w Szwecji w '95
Chris Wood