2012-08-13 55 views
3

是否可以在表變量列的定義中整理SQL_Latin1_General_CP1_CS_AS?帶有區分大小寫的列的T-SQL表變量 - 整理SQL_Latin1_General_CP1_CS_AS

我想這樣做的原因是因爲我的源表中有大小寫敏感的信息,但是當我將它插入到表變量中時,主鍵(它是聚簇的)出現問題 - 檢測到重複的值 - 如「全部」和「全部」。

這就是爲什麼我試圖找到一種方法,使表變量列區分大小寫也爲下面的語句:

SELECT SERVERPROPERTY ('Collation') 

給我:規則「SQL_Latin1_General_CP1_CI_AS」

回答

6

是的,它是可能的。在聲明表變量時,可以爲每列指定排序規則。

declare @T table 
(
    Col varchar(20) collate SQL_Latin1_General_CP1_CS_AS 
) 
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聲明兩行,然後錯誤。