是否可以在表变量列的定义中整理 SQL_Latin1_General_CP1_CS_AS?
我想这样做的原因是因为我的源表中有区分大小写的信息,但是当我将它插入到表变量中时,主键出现问题(它是聚集的) - 检测到重复值 - 比如“全部”和所有'。
这就是为什么我试图找到一种方法使表变量列也区分大小写,如下所示:
SELECT SERVERPROPERTY ('Collation')
给我:“SQL_Latin1_General_CP1_CI_AS”
是否可以在表变量列的定义中整理 SQL_Latin1_General_CP1_CS_AS?
我想这样做的原因是因为我的源表中有区分大小写的信息,但是当我将它插入到表变量中时,主键出现问题(它是聚集的) - 检测到重复值 - 比如“全部”和所有'。
这就是为什么我试图找到一种方法使表变量列也区分大小写,如下所示:
SELECT SERVERPROPERTY ('Collation')
给我:“SQL_Latin1_General_CP1_CI_AS”
对的,这是可能的。您可以在声明表变量时为每列指定排序规则。
declare @T table
(
Col varchar(20) collate SQL_Latin1_General_CP1_CS_AS
)
是的。编写以下脚本大约需要 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
条语句中出错。