gpt4 book ai didi

SQL Server 2008 区分大小写的唯一列

转载 作者:行者123 更新时间:2023-12-01 22:31:14 25 4
gpt4 key购买 nike

有没有办法使列既唯一又区分大小写?

我希望能够把

abcdeABCDE

在一个独特的列中。

最佳答案

可以通过唯一约束来强制执行唯一性。

唯一索引是否区分大小写由服务器(或表)的排序规则定义。

您可以使用以下查询获取数据库的当前排序规则:

SELECT DATABASEPROPERTYEX('AdventureWorks', 'Collation') SQLCollation;

你应该得到类似的东西:

SQLCollation
————————————
SQL_Latin1_General_CP1_CI_AS

此处,排序规则末尾的“CI_AS”表示:CI = 不区分大小写,AS = 区分重音。

这可以更改为您需要的任何内容。如果您的数据库和/或表确实具有区分大小写的排序规则,我希望您的索引的唯一性也将区分大小写,例如您的 abcdefABCDEF 都应该可以接受作为唯一字符串。

马克

更新:

我刚刚尝试过这个(SQL Server 2008 Developer Edition x64) - 对我有用(我的数据库通常使用“Latin1_General_CI_AS 排序规则,但我什至可以为每个表/每个 VARCHAR 列定义不同的排序规则):

CREATE TABLE TestUnique
(string VARCHAR(50) COLLATE SQL_Latin1_General_Cp1_CS_AS)

CREATE UNIQUE INDEX UIX_Test ON dbo.TestUnique(string)

INSERT INTO dbo.TestUnique(string) VALUES ('abc')
INSERT INTO dbo.TestUnique(string) VALUES ('ABC')

SELECT * FROM dbo.TestUnique

我回来了:

string
ABC
abc

并且没有关于违反唯一索引的错误。

关于SQL Server 2008 区分大小写的唯一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1514253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com