我有一个标量值函数,它返回包含ASCII单元分隔符Char(31)的varchar数据。我将此结果用作Order By子句的一部分,并尝试按升序排序。带有非可打印字符的SQL Server排序顺序
我的标量值函数返回结果如以下的(不可打印的字符阐明了供参考)
- ABC
- ABC(CHAR(31))DEF
- ABC(CHAR(31))DEF (CHAR(31))HIJ
我期望的是,当我通过上升的结果命令将执行以下操作:
- ABC
- ABCDEF
- ABCDEFHIJ
,而不是我看到的结果完全相反:
- ABCDEFHIJ
- ABCDEF
- ABC
现在我相当肯定,这与非打印字符有关,但我不知道为什么。任何想法,为什么是这种情况?
感谢
SQLCollation返回SQL_Latin1_General_CP1_CI_AS – tribus
@tribus - 整理似乎确实似乎以另一种方式排列项目。您必须选择更改数据库排序规则设置,通过子句显式地将其他排序规则添加到您的排序中,或者如pete所述将列定义更改为NVARCHAR。 –