Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Nie rozumiem sortowania? (MySQL, RDBMS, zestawy znaków)

Głównym punktem porównywania bazy danych jest określenie sposobu sortowania i porównywania danych.

Wrażliwość na wielkość liter w porównaniach ciągów

SELECT "New York" = "NEW YORK";` 

zwróci true w przypadku sortowania bez rozróżniania wielkości liter; false w przypadku rozróżniania wielkości liter.

Które sortowanie robi, co można powiedzieć za pomocą _ci i _cs przyrostek w nazwie sortowania. _bin collations do porównań binarnych (ciągi muszą być identyczne w 100%).

Porównanie umlautów/znaków z akcentami

porównywanie określa również, czy znaki akcentowane są traktowane jako ich odpowiedniki bazy łacińskiej w porównaniach ciągów.

SELECT "Düsseldorf" =  "Dusseldorf";
SELECT "Èclair" =      "Eclair";

zwróci true w pierwszym przypadku; fałszywe w tym ostatnim. Będziesz musiał przeczytać opis każdego zestawienia, aby dowiedzieć się, który jest który.

Sortowanie ciągów

Sortowanie wpływa na sposób sortowania ciągów.

Na przykład

  • Umlauty Ä Ö Ü znajdują się na końcu alfabetu w alfabecie fińskim/szwedzkim latin1_swedish_ci

  • są traktowane jako A O U w niemieckim sortowaniu DIN-1 (latin_german1_ci )

  • oraz jako AE OE UE w niemieckim sortowaniu DIN-2 (latin_german2_ci ). (sortowanie według "książki telefonicznej")

  • W języku latin1_spanish_ci , „ñ” (n-tylda) to osobna litera między „n” i „o”.

Te reguły spowodują różne porządki sortowania, gdy zostaną użyte znaki inne niż łacińskie.

Korzystanie z sortowania w czasie wykonywania

Musisz wybrać sortowanie tabeli i kolumn, ale jeśli nie masz nic przeciwko spadkowi wydajności, możesz wymusić na operacjach bazy danych określone sortowanie w czasie wykonywania za pomocą COLLATE słowo kluczowe.

To posortuje table przez name kolumna przy użyciu niemieckich zasad sortowania DIN-2:

SELECT name
FROM table
ORDER BY name COLLATE latin1_german2_ci;

Korzystanie z funkcji COLLATE w czasie wykonywania będzie miało wpływ na wydajność, ponieważ każda kolumna musi zostać przekonwertowana podczas zapytania. Więc zastanów się dwa razy, zanim zastosujesz to do dużych zbiorów danych.

Dokumentacja MySQL:

  • Zestawy znaków i zestawienia obsługiwane przez MySQL
  • Przykłady efektu sortowania
  • Problemy z sortowaniem


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak rozwiązać ORA-29285:błąd zapisu pliku

  2. Tabela przestawna Oracle SQL

  3. java.lang.UnsatisfiedLinkError:brak ocijdbc11 w javie. biblioteka.ścieżka

  4. Obcinanie tabeli w procedurze składowanej

  5. oci_bind_by_name i do_date PHP/OCI/Oracle