2008-12-11 35 views
5

Có cách nào để dễ dàng sắp xếp trong SQL Server 2005 trong khi bỏ qua dấu gạch ngang trong trường chuỗi không? Hiện tại tôi phải thực hiện một REPLACE (tên trường, '-', '') hoặc một hàm để loại bỏ dấu nối trong mệnh đề sắp xếp. Tôi đã hy vọng có một lá cờ tôi có thể đặt ở trên cùng của thủ tục được lưu trữ hoặc một cái gì đó.Phân loại và dấu gạch nối SQL

Truy cập và sắp xếp mặc định GridView có vẻ như bỏ qua hypen trong chuỗi.

Trả lời

15

Tôi đã học được những điều mới mẻ, giống như bạn cũng

Tôi tin rằng sự khác biệt là giữa một "Chuỗi Sắp xếp" vs một "Lời Sắp xếp" (bỏ qua gạch nối) chênh lệch

mẫu giữa WORD sắp xếp và STRING loại http://andrusdevelopment.blogspot.com/2007/10/string-sort-vs-word-sort-in-net.html

Từ Microsoft http://support.microsoft.com/kb/322112

Ví dụ, nếu bạn đang sử dụng SQL chiếu "SQL_Latin1_General_CP1_CI_AS", các phi Unicode chuỗi 'ac' là ít hơn chuỗi 'ab' vì gạch nối ("-") được sắp xếp như một ký tự riêng biệt xuất hiện trước "b". Tuy nhiên, nếu bạn chuyển đổi các chuỗi này thành Unicode và bạn thực hiện so sánh , chuỗi Unicode N'a-c ' được coi là lớn hơn N'ab' vì quy tắc sắp xếp Unicode sử dụng một từ sắp xếp "bỏ qua dấu gạch nối.

tôi đã một số mẫu mã bạn cũng có thể chơi với các đối chiếu để tìm một người để làm việc với sắp xếp của bạn

DECLARE @test TABLE 
(string VARCHAR(50)) 

INSERT INTO @test SELECT 'co-op' 
INSERT INTO @test SELECT 'co op' 
INSERT INTO @test SELECT 'co_op' 

SELECT * FROM @test ORDER BY string --COLLATE SQL_Latin1_General_Cp1_CI_AS 
--co op 
--co-op 
--co_op 

SELECT * FROM @test ORDER BY CAST(string AS NVARCHAR(50)) --COLLATE SQL_Latin1_General_Cp1_CI_AS 
--co op 
--co_op 
--co-op 
+0

làm việc rất lớn, cảm ơn! – tidge

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