当前位置: 首页 > 面试题库 >

.NET和T-SQL之间的字符串比较差异?

汪高岑
2023-03-14
问题内容

在我编写的测试案例中,字符串比较似乎在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代码:

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排序规则没有。

这导致在两者之间对连字符的区别对待。



 类似资料:
  • 问题内容: 我需要使用T-SQL逐个字符地比较两个字符串。假设我有两个类似的字符串: 每当字符不匹配时,我想增加变量@Diff + = 1。在这种情况下,前三个字符不同。因此,@ Diff = 3(默认值为0)。 感谢您的所有建议。 问题答案: 对于您不想使用逐行方法的表中的列,请尝试以下一种方法: = > SQL小提琴演示

  • 问题内容: package main 该代码可以很好地工作。但是,如果按如下所示更改方法,则会导致死循环。区别在于将替换为。为什么? 问题答案: 因为程序包检查要打印的值是否具有方法(或换句话说:是否实现接口),如果是,则将调用它以获取值的表示形式。 软件包doc中对此进行了说明: […]如果操作数实现String()字符串方法,则将调用该方法将对象转换为字符串,然后根据动词的要求对其进行格式化(

  • 本文向大家介绍C#和.NET Framework之间的比较,包括了C#和.NET Framework之间的比较的使用技巧和注意事项,需要的朋友参考一下 C#是一种编程语言,.NET框架是由Microsoft开发的软件框架。 .NET具有公共语言运行库(CLR),它是.NET框架的虚拟组件。框架是一大类库。 .NET不仅具有C#,而且还具有C#,您可以使用VB,F#等。为.NET Framework

  • 这些声明有什么不同? 每种情况下的内存分配情况如何?

  • 除了后面使用正则表达式之外,java.lang.String的和方法有什么区别?对于简单的替换,如将替换为,有什么区别吗?

  • 我错过了什么?