字符串.NET和T-SQL之间的比较差异? [英] String Comparison differences between .NET and T-SQL?

查看:137
本文介绍了字符串.NET和T-SQL之间的比较差异?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我编写的测试用例中,字符串比较似乎在SQL Server / .NET CLR之间没有相同的作用。

In a test case I've written, the string comparison doesn't appear to work the same way between SQL server / .NET CLR.

这个C#代码:

string lesser =  "SR2-A1-10-90";
string greater = "SR2-A1-100-10";

Debug.WriteLine(string.Compare("A","B"));
Debug.WriteLine(string.Compare(lesser, greater));

将输出:

-1
1

此SQL Server代码:

This SQL Server code:

declare @lesser varchar(20);
declare @greater varchar(20);

set @lesser =  'SR2-A1-10-90';
set @greater = 'SR2-A1-100-10';

IF @lesser < @greater
    SELECT 'Less Than';
ELSE
    SELECT 'Greater than';

将输出:

Less Than

为什么有区别?

推荐答案

这是在此处记录

Windows归类(例如 Latin1_General_CI_AS )使用Unicode类型归类规则。 SQL Collat​​ions不能。

Windows collations (e.g. Latin1_General_CI_AS) use Unicode type collation rules. SQL Collations don't.

这会导致连字符在两个字符之间有不同的对待。

This causes the hyphen character to be treated differently between the two.

这篇关于字符串.NET和T-SQL之间的比较差异?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆