2013-05-31 16 views
6

Jak sortować następujące japoński znak w SQL Server,Jak sortować japoński znak w SQL

賃貸人側連絡先 (Lessor side contact) 
解約連絡先 (Termination contacts) 
賃借人側連絡先 (Lessee side contact) 
更新連絡先 (Update contact) 

powyżej order(1,3,2,4)

Ale rzeczywista kolejność jest (tzn. Wyjście że chcę)

賃貸人側連絡先 (Lessor side contact) 
賃借人側連絡先 (Lessee side contact) 
解約連絡先 (Termination contacts) 
更新連絡先 (Update contact) 

powyżej order(1,2,3,4)

próbowałem tak,

select * from test order by Test `COLLATE Japanese_CS_AS_KS` 

ale kolejność wyniku podobnego (3,4,2,1)

+0

próbowałem użyć 'Japanese_Unicode_CI_AS' Sortowanie lub próbowałem dla' Chinese_PRC_CI_AS sortowania' .. – Rahul

+0

Wierzę, że faktycznie będziesz musiał przechowywać kolumnę "nazwa sortowania", gdzie umieścisz czytanie w hiraganie lub katakanie i sortujesz według tego zamiast. Nie sądzę, by kanji samo w sobie było z natury podatne na sortowanie przez coś innego niż radykalne lub liczbę uderzeń. –

Odpowiedz

4

Patrząc na systemie Windows Japanese collations raczej wtedy twoi sortowania SQL (SQL Server obsługuje oba), metodą prób i błędów, to działa

DECLARE @t TABLE (id int, SomeString nvarchar(100)); 
INSERT @t VALUES 
(1, N'賃貸人側連絡先'), 
(3, N'解約連絡先'), 
(2, N'賃借人側連絡先'), 
(4, N'更新連絡先'); 

select * from @t order by SomeString COLLATE Japanese_Bushu_Kakusu_100_CS_AS_KS desc 

Nie wiem, dlaczego trzeba DESC chociaż. Należy również pamiętać, Japanese_XJIS_100_CS_AS_KS nie działa

+0

tutaj, co jest potrzebne "DESC"? bez DESC, wyświetla się w kolejności malejącej. Dlaczego to pokazuje tak – Vino

1

Kod sortowania ma 3 cząstki w końcu:

  • CS - przypadku wrażliwych
  • AS - akcent wrażliwy
  • KS - wrażliwy na kanatype, który jest bardzo podobny do japońskiego (omówiony w to questions)

Jeśli chcesz, aby sortowanie uwzględniało wielkość liter, zmień CS na CI. Może więc wymagana jest inna kombinacja wrażliwości.

1

oprócz użytkownika @ gbn odpowiedź

  • 賃 ma Radical-suwowy hrabia 154,6
  • 解 ma 148,6
  • 更 ma 73,3

Więc pytanie powinieneś raczej, dlaczego chcesz mieć malejącą kolejność?

+0

Jeśli używam "order by test COLLATE Japanese_Bushu_Kakusu_100_CS_AS_KS desc", to pokazuję w porządku malejącym ... Chcę wyświetlać w porządku rosnącym bez użycia DESC .. – Vino

+0

@Vino: Używam DESC do sortowania tego, jak chcesz w pytaniu. Kiedy nie używam DESC (= ASC), daje odwrotną kolejność do tego, o co prosisz. Dlatego pytasz o malejący porządek. Myślę, że to właśnie wyjaśniają informacje devio – gbn