7

是否可以在表变量列的定义中整理 SQL_Latin1_General_CP1_CS_AS?

我想这样做的原因是因为我的源表中有区分大小写的信息,但是当我将它插入到表变量中时,主键出现问题(它是聚集的) - 检测到重复值 - 比如“全部”和所有'。

这就是为什么我试图找到一种方法使表变量列也区分大小写,如下所示:

SELECT SERVERPROPERTY ('Collation')

给我:“SQL_Latin1_General_CP1_CI_AS”

4

2 回答 2

9

对的,这是可能的。您可以在声明表变量时为每列指定排序规则。

declare @T table
(
  Col varchar(20) collate SQL_Latin1_General_CP1_CS_AS
)
于 2012-08-13T08:09:54.877 回答
2

是的。编写以下脚本大约需要 2 分钟:

declare @T table (
    ID int not null,
    Val1 varchar(10) collate SQL_Latin1_General_CP1_CS_AS not null primary key
)

insert into @T(ID,Val1) values (1,'All'),(2,'ALL')

insert into @T(ID,Val1) values (3,'All')

首先存储两行,然后在第二insert条语句中出错。

于 2012-08-13T08:12:17.510 回答