当前位置:  开发笔记 > 前端 > 正文

SQL排序和连字符

如何解决《SQL排序和连字符》经验,为你挑选了1个好方法。

有没有办法在SQL Server 2005中轻松排序而忽略字符串字段中的连字符?目前我必须执行REPLACE(fieldname,' - ','')或函数来删除sort子句中的连字符.我希望有一个标志,我可以设置在存储过程的顶部或其他东西.

Access和GridView默认排序似乎忽略了字符串中的泛滥.



1> jerryhung..:

我也学到了一些新东西,就像你一样

我相信区别在于" 字符串排序 "与" 字排序 "之间(忽略连字符)

WORD排序和STRING排序之间的示例差异 http://andrusdevelopment.blogspot.com/2007/10/string-sort-vs-word-sort-in-net.html

来自Microsoft http://support.microsoft.com/kb/322112

例如,如果您使用SQL排序规则"SQL_Latin1_General_CP1_CI_AS",则非Unicode字符串"ac"小于字符串"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

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有