2013-11-15 12 views
5

Wiele czytałem na temat sortowania i próbowałem kilku różnych rzeczy, ale nie mogę uzyskać pożądanych rezultatów.Sortowanie serwera SQL zgodnie z niewrażliwym na wielkość liter w języku Java Porównanie Unicode

Poszukuję sortowania, które nie uwzględnia wielkości liter, akcentuje, ale umieszcza wszystkie znaki z akcentami po wszystkich "zwykłych" znakach. Na przykład, chcę wynik takiego:

  • "AO Ark"
  • "AO Smith Electrical Products Company"
  • "AZ Vesalius"
  • „A.ö.BKH Johann/Tirol "

Latin1_General_BIN traktuje akcenty tak, jak chcę, ale rozróżnia małe i wielkie litery.

Latin1_General_CI_AS, SQL_Latin1_General_CI_AS i Latin1_General_CI_AI wszystkim zwrócić ten:

  • "ao Arka"
  • "AO Smith Electrical Products Company"
  • "A.ö.BKH Johann/Tirol"
  • "AZ Vesalius"

Czy istnieje taka sortowania?

+0

Co daje Latin1_General_CI_AS? –

+0

@ Love2Learn Latin1_General_CI_AS, SQL_Latin1_General_CI_AS i Latin1_General_CI_AI wszystkie dają taki sam wynik, jak powyżej. – aiguofer

+0

Aby obejść ten problem, można zamówić za pomocą 'UPPER (str)' i użyć porównania 'Latin1_General_BIN' ([demo] (http://sqlfiddle.com/#!6/1e4c7/22)). – dasblinkenlight

Odpowiedz

0

Prostą odpowiedzią na to pytanie jest "Nie" - nie ma sortowania, które porządkuje znaki tak, jak chcesz.

sortowania koduje zasady właściwego wykorzystania znaków dla obu języka, takich jak grecki i polski, lub alfabetu, np jako Latin1_General (alfabetu łacińskiego używana przez zachodnioeuropejskich językach).

To, czego oczekujesz, nie jest nierozsądne, ale nie odzwierciedla żadnego języka ani alfabetu, który został zamodelowany przez bieżące sortowanie SQL Server.

Jak zauważył @dasblinkenlight, można uzyskać ORDER BY (UPPER(str) collate Latin1_General_BIN), aby otrzymać zamówienie, które opisujesz.

Powiązane problemy