Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cột duy nhất của SQL Server 2008 phân biệt chữ hoa chữ thường

Tính duy nhất có thể được thực thi bằng một ràng buộc duy nhất.

Việc chỉ mục duy nhất có phân biệt chữ hoa chữ thường hay không là do đối chiếu của máy chủ (hoặc bảng) xác định .

Bạn có thể nhận được đối chiếu hiện tại của cơ sở dữ liệu của mình với truy vấn này:

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

và bạn sẽ nhận được một cái gì đó như:

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

Ở đây, "CI_AS" ở cuối đối chiếu có nghĩa là:CI =Phân biệt chữ hoa chữ thường, AS =Phân biệt dấu.

Điều này có thể được thay đổi thành bất cứ điều gì bạn cần. Nếu cơ sở dữ liệu và / hoặc bảng của bạn có đối chiếu phân biệt chữ hoa chữ thường, tôi hy vọng rằng tính duy nhất của chỉ mục của bạn cũng sẽ phân biệt chữ hoa chữ thường, ví dụ: abcdef của bạn và ABCDEF cả hai đều phải được chấp nhận dưới dạng các chuỗi duy nhất.

Marc

CẬP NHẬT:

Tôi vừa thử cái này (SQL Server 2008 Developer Edition x64) - phù hợp với tôi (cơ sở dữ liệu của tôi thường sử dụng đối chiếu "Latin1_General_CI_AS, nhưng tôi có thể xác định một cái khác cho mỗi bảng / mỗi cột 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

và tôi nhận lại:

string
ABC
abc

và không có lỗi về chỉ mục duy nhất bị vi phạm.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cải tiến hiệu suất &khả năng quản lý ẩn trong SQL Server 2012/2014

  2. SQL Làm thế nào để đặt chính xác giá trị biến ngày và sử dụng nó?

  3. T-SQL:phân tách và tổng hợp các giá trị được phân tách bằng dấu phẩy

  4. Khi nào sử dụng Biểu thức bảng chung (CTE)

  5. Tạo tập lệnh cho các bản ghi cụ thể trong SQL Server