Sql server 使用SQL拉丁语1\u常规\u CP1\u CI\u作为时的ASCII比较

Sql server 使用SQL拉丁语1\u常规\u CP1\u CI\u作为时的ASCII比较,sql-server,collation,Sql Server,Collation,我运行下面的查询以查看字符串在SQL Server中的比较情况,因为基于字段与此类数据的比较的不同查询产生的结果与预期的不同。我不确定角括号是否会被视为比数字低的值(根据ASCII表,它不会,但希望检查)。作为结果的一部分,我回顾了关于字符串比较、排序和期望值的多篇文章,它们似乎都强调了这不应该以这种方式工作。数据库的排序规则(与引起问题的字段一样)是SQL\u拉丁1\u通用\u CP1\u CI\u as SELECT ASCII('<') AS [<] ,AS

我运行下面的查询以查看字符串在SQL Server中的比较情况,因为基于字段与此类数据的比较的不同查询产生的结果与预期的不同。我不确定角括号是否会被视为比数字低的值(根据ASCII表,它不会,但希望检查)。作为结果的一部分,我回顾了关于字符串比较、排序和期望值的多篇文章,它们似乎都强调了这不应该以这种方式工作。数据库的排序规则(与引起问题的字段一样)是SQL\u拉丁1\u通用\u CP1\u CI\u as

SELECT   ASCII('<') AS [<]
        ,ASCII('0') AS [0]
        ,CASE WHEN '<0.1' < '0.1' THEN 1 ELSE 0 END AS TEST1
        ,CASE WHEN '<' < '0' THEN 1 ELSE 0 END AS TEST2
        ,CASE WHEN ASCII('<') < ASCII('0') THEN 1 ELSE 0 END AS TEST3

选择ASCII码('ASCII码和字符的排序顺序不一样。从
ASCII
返回的值是一致的,无论排序规则如何。感谢您的解释,这很有帮助!作为您的回答的结果,我试图找到一个表或某个东西来定义基于排序规则的排序,但显然这是错误的这是一个很好的秘密。一旦我知道我可以期望结果是一致的,即使我实际上不知道它与什么是一致的,这真的很好。
<   0   TEST1   TEST2   TEST3
60  48  1       1       0