如何仅在一个表列中保存区分大小写的数据?

MoS*_*She 2 c# database sql-server case-sensitive

我正在使用SQL Server数据库来存储我的应用程序的信息.

表中的一列必须存储区分大小写的数据.

如何将表中的这一特定列设置为区分大小写?

编辑:

1)我使用linq to sql进行查询2)我存储在数据库信息中,即mast是Case sensative

小智 6

您可以在列级别覆盖排序规则,并将其设置为区分大小写的排序规则.

以下脚本显示了两种不同的方式

  1. 在表创建期间设置排序规则.
  2. 使用ALTER语句为现有列设置排序规则.

在整理中Latin1_General_CS_AS,CS代表CASE SENSITIVE

阅读此处以了解有关SQL Server排序规则的更多信息.

在创建表期间设置排序规则

使用排序规则创建脚本

CREATE TABLE textvalue
(
     caseinsensitive  VARCHAR(30)
  ,  casesensitive    VARCHAR(30)
        COLLATE Latin1_General_CS_AS
);
Run Code Online (Sandbox Code Playgroud)

在alter table中设置排序规则

创建没有排序规则的脚本

CREATE TABLE textvalue
(
     caseinsensitive  VARCHAR(30)
  ,  casesensitive    VARCHAR(30)
);
Run Code Online (Sandbox Code Playgroud)

更改脚本以设置排序规则

ALTER TABLE textvalue
    ALTER COLUMN casesensitive VARCHAR(30)
    COLLATE Latin1_General_CS_AS;
Run Code Online (Sandbox Code Playgroud)

使用测试数据演示的示例

填充表脚本

INSERT INTO textvalue (caseinsensitive, casesensitive) VALUES
  ('test', 'Test'),
  ('Test', 'test'),
  ('TeSt', 'TeSt');
Run Code Online (Sandbox Code Playgroud)

在区分大小写的列上搜索脚本:SQL Fiddle演示

SELECT  caseinsensitive
    ,   casesensitive  
FROM    textvalue 
WHERE   casesensitive = 'test';
Run Code Online (Sandbox Code Playgroud)

输出:

CASEINSENSITIVE  CASESENSITIVE
---------------  -------------
Test             test
Run Code Online (Sandbox Code Playgroud)

在不区分大小写的列上搜索脚本:SQL Fiddle演示

SELECT  caseinsensitive
    ,   casesensitive  
FROM    textvalue 
WHERE   caseinsensitive = 'test';
Run Code Online (Sandbox Code Playgroud)

输出:

CASEINSENSITIVE  CASESENSITIVE
---------------  -------------
test             Test
Test             test
TeSt             TeSt
Run Code Online (Sandbox Code Playgroud)