2013-05-17 11 views
6

Przepraszam mój błąd, powinienem podać prawdziwą próbkę na pytanie, mój ID zawarte znaki Wewnątrz: kodzamówienie przez 1.99.10 i 1.99.9 serwerem sql

próbkowania:

select ID from student order by ID 

Expected output from mine   but system output 
-------------------------   ----------------- 
JAD.1.99.9        JAD.1.99.10 
JAD.1.99.10       JAD.1.99.9 

i ten ID jest typu nvarchar.

+2

Wynik systemowy to normalne oczekiwane zachowanie podczas sortowania według wartości tekstowych. Nie są liczbami. Znak "1" poprzedza znak "9". – Tim

+0

Skorzystaj z tego linku może być pewien pomysł.http: //stackoverflow.com/questions/119730/how-do-i-sort-a-varchar-column-in-sql-server-that-contains-numbers – Pank

+0

możliwy duplikat kolumny [Jak sortować kolumnę "Numer wersji"] za pomocą kwerendy SQL Server] (http://stackoverflow.com/questions/3474870/how-can-i-sort-a-version-number-column - generowanie kwerendy przy użyciu serwera SQL) – Pondlife

Odpowiedz

14

Yesterday było podobne pytanie, gdzie dowiedziałem się, że można użyć hierarchyid wersji sortowania (jeśli używasz przynajmniej SQL-Server 2008):

SELECT id 
FROM student 
ORDER BY Cast('/' + Replace(id, '.', '/') + '/' AS HIERARCHYID) 

DEMO

+0

Prawidłowe rozwiązania !! –

+2

To jedna świetna sztuczka! –

+0

dziękuję za wskazanie mojego błędu ... w mojej odpowiedzi ..... –

-2

należy zamówić przez podłańcuch części po jakiejkolwiek kropce. To będzie zapytanie SQL specyficzne dla DB, a ponieważ nie wspomniałeś o tym, którego używasz, nie mogę podać szczegółowego przykładu SQL.

ten sposób można rzucić dziesiętne wartości

http://www.w3resource.com/sql/aggregate-functions/avg-decimal-places-using-cast-within-avg.php

Odpowiedź od Tim jest najlepszy ..

Ale daję jeszcze jedno rozwiązanie za porządek wartości varchar -

SELECT id 
FROM student 
ORDER BY ID desc 
+2

To nie zwróci tego, czego chce użytkownik2098512 –

+0

Nie możesz odwrócić kolejności tylko dlatego, że wynik OP został źle ustawiony. Teraz zawsze sortujesz malejąco, nawet jeśli id ​​to "1.99.8" i "1.99.9". To także nie jest sortowanie wersji. Po prostu przetestuj go w '1.1.1' i' 2.1', który zaczyna się od '2.1'. –

+2

To zapytanie jest idealne do zamawiania w typie varchar .... kolumna – Pank

Powiązane problemy