Uczę się sqlite z książki, która wielokrotnie wspominała o zestawianiu i zestawianiu sekwencji. Co to dokładnie znaczy w świecie baz danych?
źródło
Uczę się sqlite z książki, która wielokrotnie wspominała o zestawianiu i zestawianiu sekwencji. Co to dokładnie znaczy w świecie baz danych?
Zasadniczo, jak sortować i porównywać ciągi.
Przykłady:
Porównywanie:
Sortowanie:
Specjalna równoważność znaków
Niektóre SQL (SQL Server 2008+)
DECLARE @foo TABLE (bar varchar(2))
INSERT @foo VALUES ('z'), ('æ'), ('ø'), ('å'), ('ss'), ('ß'), ('a'), ('ä')
SELECT * FROM @foo ORDER BY bar COLLATE Finnish_Swedish_100_CI_AS
SELECT * FROM @foo ORDER BY bar COLLATE Norwegian_100_CI_AS
SELECT * FROM @foo ORDER BY bar COLLATE Latin1_General_100_CS_AS --german (western europe) and default
SELECT * FROM @foo ORDER BY bar COLLATE German_PhoneBook_100_CS_AS
„Sortowanie” najlepiej zdefiniować prawdopodobnie na etymology.com,
koniec 14c., „zebranie się i porównanie”
W ciągu ostatnich 600 lat nic się nie zmieniło. „zestawienie” oznacza „połączyć” i niezależnie od tego, czy jest to uporządkowanie książki, chronologicznie czy w inny sposób w bazie danych, wszystko jest takie samo.
Odnosząc się do informatyki, oddzielamy mechanizm przechowywania od zamawiania . Być może słyszałeś o ASCII-betical . Odnosi się to do porównania opartego na binarnym kodowaniu znaków ASCII. W tym systemie pamięć masowa i sortowanie są identyczne. Gdyby „kodowanie” standaryzowane przez ASCII kiedykolwiek zmieniło, „sortowanie” (kolejność) również by się zmieniło.
POSIX zaczął to przełamywać LC_COLLATE
. Ale kiedy przechodzimy do Unicode, powstało konsorcjum, które również ustandaryzowało sortowanie: ICU.
W specyfikacji SQL dostępne są dwa rozszerzenia zapewniające sortowanie,
F690
: „Obsługa sortowania:
Obejmuje collation name
, collation clause
, collation definition
i drop collation
.
F692
: Rozszerzona obsługa sortowania,
Obejmuje dołączenie innego domyślnego zestawienia do kolumny w schemacie.
Zasadniczo te zapewniają możliwość CREATE
i DROP
sortowania, aby określić je dla operatorów i rodzaju, oraz określenie wartości domyślnych dla kolumn.
Aby uzyskać więcej informacji o tym, co SQL ma do zaoferowania sprawdź,
Zamiast wkleić ograniczony przykład, oto pakiet testowy PostgreSQL, który jest dość obszerny. Sprawdź przynajmniej pierwszy link i poszukaj'Türkiye' COLLATE "tr-x-icu" ILIKE '%KI%' AS "false"
collate.icu.utf8.out
collate.linux.utf8.out
collate.out
Prawdopodobnie nie warto tego sprawdzać, ale umieściłem go tutaj dla kompletności, nudne kontrole POSIX.Sortuj porządek. Karty dziurkowane zostały zestawione. Płaskie rekordy plików są zestawiane. Nie dotyczy to tylko baz danych.
Jest to oczywiste dla tekstu, ale w przypadku danych binarnych przechowywanych jako znaki może być trudniejsze.