有没有一种方法可以在 SQL Server 2005 中轻松排序,同时忽略字符串字段中的连字符?目前我必须执行 REPLACE(fieldname,'-','') 或函数来删除排序子句中的连字符。我希望可以在存储过程的顶部设置一个标志或其他东西。
Access 和 GridView 默认排序似乎忽略字符串中的连字符。
我学到了新东西,就像你一样
我相信区别在于“字符串排序" vs a "词排序“(忽略连字符)
WORD 排序和 STRING 排序之间的示例差异http://andrusdevelopment.blogspot.com/2007/10/string-sort-vs-word-sort-in-net.html http://andrusdevelopment.blogspot.com/2007/10/string-sort-vs-word-sort-in-net.html
来自微软http://support.microsoft.com/kb/322112 http://support.microsoft.com/kb/322112
例如,如果您使用 SQL
整理
“SQL_Latin1_General_CP1_CI_AS”,
非 Unicode 字符串 'a-c' 小于
字符串 'ab' 因为连字符
(“-”)作为单独的排序
“b”之前的字符。
但是,如果您转换这些字符串
到 Unicode 并且执行相同的操作
比较,Unicode 字符串 N'a-c'
被认为大于 N'ab'
因为 Unicode 排序规则使用
忽略连字符的“单词排序”。
我做了一些示例代码
您还可以使用 COLLATE 来找到适合您排序的选项
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)