Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kolom Unik SQL Server 2008 yang peka huruf besar-kecil

Keunikan dapat ditegakkan dengan batasan unik.

Apakah indeks unik peka huruf besar atau kecil ditentukan oleh pemeriksaan server (atau tabel) .

Anda bisa mendapatkan susunan database Anda saat ini dengan kueri ini:

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

dan Anda akan mendapatkan sesuatu seperti:

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

Di sini, "CI_AS" di akhir susunan berarti:CI =Tidak Peka Huruf Besar, AS =Peka Aksen.

Ini dapat diubah menjadi apa pun yang Anda butuhkan. Jika database dan/atau tabel Anda memang memiliki susunan case-sensitive, saya berharap keunikan indeks Anda juga case-sensitive, mis. abcdef . Anda dan ABCDEF keduanya harus dapat diterima sebagai string unik.

Marc

PEMBARUAN:

Saya baru saja mencoba ini (SQL Server 2008 Developer Edition x64) - berfungsi untuk saya (database saya umumnya menggunakan "Latin1_General_CI_AS collation, tetapi saya dapat menentukan yang berbeda per tabel/per kolom VARCHAR bahkan):

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

dan saya kembali:

string
ABC
abc

dan tidak ada kesalahan tentang indeks unik yang dilanggar.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengganti Nama Kunci JSON di SQL Server (T-SQL)

  2. Bagaimana cara menghasilkan nomor acak untuk setiap baris dalam pemilihan T-SQL?

  3. Bagaimana menjalankan paket SSIS ketika file tiba di folder

  4. Bagaimana mengkonversi float ke varchar di SQL Server

  5. Cara teraman untuk mendapatkan ID catatan terakhir dari tabel