Sortowanie stringów - Jaka funkcja użyta jest do porównania?

0

Mam tabelę w SQLite, która posiada kolumnę z napisami w różnych językach (utf8) sortuje je raz przy pomocy zapytania (przykładowe) SELECT * FROM COMPANY ORDER BY NAME ASC; - później na raz są wrzucane do tablicy w programie i na tym kończy się w zasadzie udział bazy.
Chcąc przyśpieszyć wyszukiwanie stringów tej tablicy chcę użyć wyszukiwania binarnego bo mam już posortowany zbiór tyle, że muszę zadecydować czy podany przeze mnie string jest większy, mniejszy czy identyczny z tym z bazy.
Tutaj nasuwa się pytanie jaka funkcja dokładnie jest użyta przy sortowaniu w SQLite - jeśli nie będę używał identycznej w swoim programie to wyszukiwanie binarne może nie znajdywać odpowiednich wpisów.
Dokumentacja na ten temat milczy.

0

Poczytaj o "collations" (nie mam pojęcia, jak to jest po polsku).

Możesz sam określić, jak mają być porównywane stringi, są pewne sposoby wbudowane, np.

ORDER BY Name COLLATE NOCASE

ale równie dobrze możesz zrobić coś takiego: http://www.sqlite.org/c3ref/create_collation.html

Można też ustawiać domyślne sposoby, więc nie powiem Ci, jak jest akurat u Ciebie :)

0

Znalazłem jeszcze info o tym, że może być użyta funkcja memcmp lub strcmp z C na https://www.sqlite.org/datatypes.html implementacja w C jest bardzo prosta, ale muszę to jeszcze przetestować na UTF8 czy nie ma tam jeszcze jakiegoś locale, które by mogło wpływać na sortowanie (program będzie uruchamiany na różnych systemach i językach). Poczytam na pewno o tym 'collations' bo to by chyba załatwiło sprawę. W ostateczności posortuje to w Delphi czyli w swoim programie i na zasadach, które znam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1