2011-06-15 21 views
2

我有包含文章的表,並且有大約150.000條記錄,在該表中我有列名稱,它是varchar類型(45) 。現在我想在該表上創建索引,約束或觸發器,這將使列名在同一列的35個字符左側保持唯一。如何在SQL Server中強制執行varchar(45)列的前35個字符的唯一性

會有什麼正確的方法來做到這一點,恐怕我會失去這張大表的表現如果我使用錯誤的方法。

回答

12

創建一個計算列:

alter table YourTable add left35 as substring(col1, 1, 35) 

然後你就可以在該列創建唯一索引:

create unique index IX_YourTable_left35 on YourTable(left35) 

這將enfore表示了的col1左側35個字符的唯一性。

+0

+1正確,但我認爲數據庫的模型可能應該將字段拆分爲兩個或多個不同的字段,因爲它看起來沒有正確標準化。 – 2011-06-16 02:19:12

相關問題