如何查询区分大小写的数据库

时间:2011-01-22 03:07:51

标签: c# sql-server-2005 linq-to-sql

我正在检查数据库中的一些值,并且看起来被比较的字符串不是区分大小写的。我正在使用C#和LINQ to SQL。

3 个答案:

答案 0 :(得分:2)

您无需更改数据库 您可以将查询修改为工作区大小写:

SET NOCOUNT ON
declare @curdb sysname; select  @curdb =  db_name(0);
select  DATABASEPROPERTYEX(@curdb, 'Collation') Collation;

if object_id('test_CI', 'U') is not null
    drop table test_CI
go

create table test_CI (
    val varchar(10)
    );
go
insert into test_CI values ('TEST');    
insert into test_CI values ('Test');    
insert into test_CI values ('test');    

-- 
select * from test_CI where val = 'Test';

select * from test_CI where val collate Latin1_General_CS_AS = 'Test';

只需使用您当前的排序顺序并通过CS替换CI。

答案 1 :(得分:1)

在SQL Server中,列是否区分大小写取决于您应用于哪种排序规则。

默认排序规则可能是“SQL_Latin1_General_CP1_CI_AS”(CI为“不区分大小写”)。如果更改数据库模式以使该列具有排序规则“SQL_Latin1_General_CP1_CS_AS”,则对其的查询将区分大小写。

答案 2 :(得分:0)

检查此处提供的归类矩阵:

  

http://msdn.microsoft.com/en-us/library/ms144250.aspx

我认为你需要像SQL_Latin1_General_Cp437_CS_AS_KI_WI

这样的东西