TSQL在忽略大小写/大小写的情况下比较字符串/变量字符?

TSQL在忽略大小写/大小写的情况下比较字符串/变量字符?,sql,sql-server,tsql,sql-server-2008,collation,Sql,Sql Server,Tsql,Sql Server 2008,Collation,我正在处理一个查询,以便将从文件名读取的单词与代码中已预定义的另一个单词进行比较,并为其指定一个数值 但是,我遇到的问题是试图忽略名称的大小写,因为名称是从文件读取的,大小写可能会更改,然后与我设置的预定义值不匹配。除了把所有可能的价值都放在案例中,还有什么简单的方法可以忽略资本化吗 代码狙击手: NumberVal = CASE WHEN Name = 'Bond' OR Name = 'BOND' OR Name = 'bond' THEN 16

我正在处理一个查询,以便将从文件名读取的单词与代码中已预定义的另一个单词进行比较,并为其指定一个数值

但是,我遇到的问题是试图忽略名称的大小写,因为名称是从文件读取的,大小写可能会更改,然后与我设置的预定义值不匹配。除了把所有可能的价值都放在案例中,还有什么简单的方法可以忽略资本化吗

代码狙击手:

NumberVal = CASE   
              WHEN Name = 'Bond' OR Name = 'BOND' OR Name = 'bond' THEN 16   
            END

SQL Server be default忽略大小写,因此有人更改了您不知道的设置

如果它现在区分大小写,只需使用UPPER并忘记排序规则

CASE   
  WHEN UPPER(Name) = 'BOND' THEN 16   
 END

SQL Server be default忽略大小写,因此有人更改了您不知道的设置

如果它现在区分大小写,只需使用UPPER并忘记排序规则

CASE   
  WHEN UPPER(Name) = 'BOND' THEN 16   
 END

默认情况下SQL Server不区分大小写吗?您是否修改了该设置?@Yoda,SQL Server区分大小写,具体取决于数据的排序规则集。否,请不要为此使用
UPPER
。与通过
COLLATE
指定显式排序规则的正确方法相比,这显然效率较低,有时更容易出错。查找列的排序规则并使用不区分大小写的版本。只需将排序规则名称中的
\u CS
更改为
\u CI
。因此,
Latin1\u General\u 100\u CS\u AS
变为
Latin1\u General\u 100\u CI\u AS
,当[Name]整理Latin1\u General\u 100\u CI\u AS='Bond'然后是16时,这个谓词变为
。有关详细信息,请参见,特别是第1点和第9点。@不,SQL Server可以使用您选择的任何排序规则进行安装。有几个层次控制不同的事物,可以有不同的排序。但在实际层面上,US English OS上实例的默认排序规则是
SQL\u Latin1\u General\u CP1\u CI\u AS
,不区分大小写。实例的排序规则控制实例级对象(如登录名),是
tempdb
的排序规则,是未指定排序规则的新数据库的默认排序规则。然后,对于没有指定排序规则的新列,DB的排序规则是默认的。默认情况下SQL Server不区分大小写吗?您是否修改了该设置?@Yoda,SQL Server区分大小写,具体取决于数据的排序规则集。否,请不要为此使用
UPPER
。与通过
COLLATE
指定显式排序规则的正确方法相比,这显然效率较低,有时更容易出错。查找列的排序规则并使用不区分大小写的版本。只需将排序规则名称中的
\u CS
更改为
\u CI
。因此,
Latin1\u General\u 100\u CS\u AS
变为
Latin1\u General\u 100\u CI\u AS
,当[Name]整理Latin1\u General\u 100\u CI\u AS='Bond'然后是16时,这个谓词变为
。有关详细信息,请参见,特别是第1点和第9点。@不,SQL Server可以使用您选择的任何排序规则进行安装。有几个层次控制不同的事物,可以有不同的排序。但在实际层面上,US English OS上实例的默认排序规则是
SQL\u Latin1\u General\u CP1\u CI\u AS
,不区分大小写。实例的排序规则控制实例级对象(如登录名),是
tempdb
的排序规则,是未指定排序规则的新数据库的默认排序规则。然后,对于没有指定排序规则的新列,DB的排序规则是默认的。不,请不要为此使用
UPPER
。与通过
COLLATE
指定显式排序规则的正确方法相比,这显然效率较低,有时更容易出错。查找列的排序规则并使用不区分大小写的版本。只需将排序规则名称中的
\u CS
更改为
\u CI
。因此,
Latin1\u General\u 100\u CS\u AS
变为
Latin1\u General\u 100\u CI\u AS
,当[Name]整理Latin1\u General\u 100\u CI\u AS='Bond'然后是16时,这个谓词变为
。有关详细信息,请参见,特别是第1点和第9点。不,请不要为此使用
UPPER
。与通过
COLLATE
指定显式排序规则的正确方法相比,这显然效率较低,有时更容易出错。查找列的排序规则并使用不区分大小写的版本。只需将排序规则名称中的
\u CS
更改为
\u CI
。因此,
Latin1\u General\u 100\u CS\u AS
变为
Latin1\u General\u 100\u CI\u AS
,当[Name]整理Latin1\u General\u 100\u CI\u AS='Bond'然后是16时,这个谓词变为
。详情请参见,特别是第1点和第9点。