繁体   English   中英

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

[英]How do I save case sensitive data in only one of the table columns?

我正在使用SQL Server数据库存储有关我的应用程序的信息。

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

我应该如何在表格中将这一特定列设置为区分大小写?

编辑:

1)我使用linq到sql进行查询2)我存储在数据库信息中,区分大小写

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

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

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

在归类Latin1_General_CS_ASCS代表CASE SENSITIVE

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

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

使用排序规则创建脚本

CREATE TABLE textvalue
(
     caseinsensitive  VARCHAR(30)
  ,  casesensitive    VARCHAR(30)
        COLLATE Latin1_General_CS_AS
);

在alter table期间设置排序规则

创建没有排序规则的脚本

CREATE TABLE textvalue
(
     caseinsensitive  VARCHAR(30)
  ,  casesensitive    VARCHAR(30)
);

更改脚本以设置排序规则

ALTER TABLE textvalue
    ALTER COLUMN casesensitive VARCHAR(30)
    COLLATE Latin1_General_CS_AS;

带有测试数据的样本

填充表格脚本

INSERT INTO textvalue (caseinsensitive, casesensitive) VALUES
  ('test', 'Test'),
  ('Test', 'test'),
  ('TeSt', 'TeSt');

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

SELECT  caseinsensitive
    ,   casesensitive  
FROM    textvalue 
WHERE   casesensitive = 'test';

输出

CASEINSENSITIVE  CASESENSITIVE
---------------  -------------
Test             test

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

SELECT  caseinsensitive
    ,   casesensitive  
FROM    textvalue 
WHERE   caseinsensitive = 'test';

输出

CASEINSENSITIVE  CASESENSITIVE
---------------  -------------
test             Test
Test             test
TeSt             TeSt

有一个答案! 看看下面的链接!

http://blog.sqlauthority.com/2007/04/30/case-sensitive-sql-query-search/

下面的答案当然是替代方法,但是您确实可以在单个sql服务器列上设置区分大小写的参数。

您可以做的另一件事是将值与MD5散列进行比较,因为MD5散列对于每个字符串都是唯一的。

// md5 hash is unique for TEST, and test
SELECT * FROM table WHERE MD5(column) = MD5("TEST") // Hash : 033bd94b1168d7e4f0d644c3c95e35bf
SELECT * FROM table WHERE MD5(column) = MD5("test") // Hash : 098f6bcd4621d373cade4e832627b4f6

您可能在索引编制方面遇到问题,但是绝对值得一试:)或者,您可以在该列旁边存储一个md5哈希,例如column_md5,然后根据该列运行搜索。 唯一的缺点是,您需要在每次更新列时存储哈希值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM