[英]How do I save case sensitive data in only one of the table columns?
我正在使用SQL Server数据库存储有关我的应用程序的信息。
表中的一列必须存储区分大小写的数据。
我应该如何在表格中将这一特定列设置为区分大小写?
编辑:
1)我使用linq到sql进行查询2)我存储在数据库信息中,区分大小写
您可以在列级别覆盖排序规则,并将其设置为区分大小写的排序规则。
以下脚本显示了两种不同的方式。
在归类Latin1_General_CS_AS
, CS代表CASE SENSITIVE
CREATE TABLE textvalue
(
caseinsensitive VARCHAR(30)
, casesensitive VARCHAR(30)
COLLATE Latin1_General_CS_AS
);
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');
SELECT caseinsensitive
, casesensitive
FROM textvalue
WHERE casesensitive = 'test';
输出 :
CASEINSENSITIVE CASESENSITIVE
--------------- -------------
Test test
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.