2012-09-13 62 views
6

Tôi có một cột [datatype:varchar(50)] trong cơ sở dữ liệu (SQL Server 2008) có giá trị như hình dưới đây:Sắp xếp Bullets trong cơ sở dữ liệu

1 
2 
1.1.11 
4.1 
5 
2.1 
1.1 
4 
1.2.1 
4.2.2 
4.3 
4.2 
4.3.1 
4.2.1 
11.2 
1.2.4 
4.4 

những được đánh số đạn cho hồ sơ của tôi tôi cần phải sắp xếp chúng như nhóm tất cả các hồ sơ theo thứ tự 1,1.1,1.1.1,2,3.1,4,10.1,11.1....

Xin hãy giúp tôi về vấn đề này.

+0

Còn về 'order by column_name' thì sao? – Leri

+2

Có 'ĐẶT HÀNG B CANG CAST ('/' + YourColumn + '/' AS HIERARCHYID)' làm những gì bạn cần không? –

+0

AFAIK thực hiện lệnh 'theo thứ tự' trên cột của bạn sẽ sắp xếp chúng theo thứ tự loại tăng dần 'hợp pháp'. Bạn có cần ghép tất cả các giá trị vào một chuỗi không? – StuartLC

Trả lời

17
WITH T(YourColumn) AS 
(
SELECT '1' UNION ALL 
SELECT '2' UNION ALL 
SELECT '1.1.11' UNION ALL 
SELECT '4.1' UNION ALL 
SELECT '5' UNION ALL 
SELECT '2.1' UNION ALL 
SELECT '1.1' UNION ALL 
SELECT '4' UNION ALL 
SELECT '1.2.1' UNION ALL 
SELECT '4.2.2' UNION ALL 
SELECT '4.3' UNION ALL 
SELECT '4.2' UNION ALL 
SELECT '4.3.1' UNION ALL 
SELECT '4.2.1' UNION ALL 
SELECT '11.2' UNION ALL 
SELECT '1.2.4' UNION ALL 
SELECT '4.4' 
) 
SELECT * 
FROM T 
ORDER BY CAST('/' + YourColumn + '/' AS HIERARCHYID) 

Returns

YourColumn 
---------- 
1 
1.1 
1.1.11 
1.2.1 
1.2.4 
2 
2.1 
4 
4.1 
4.2 
4.2.1 
4.2.2 
4.3 
4.3.1 
4.4 
5 
11.2 

Là những gì bạn cần?

+0

Yep .. Cảm ơn bạn rất nhiều .. Đây là những gì tôi cần .. rất rất hữu ích – Nag

Các vấn đề liên quan