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

Kapan kita harus menggunakan NVARCHAR/NCHAR daripada VARCHAR/CHAR di SQL Server?

Alasan sebenarnya Anda ingin menggunakan NVARCHAR adalah ketika Anda memiliki berbeda bahasa di kolom yang sama, Anda perlu menangani kolom di T-SQL tanpa decoding, Anda ingin dapat melihat data "asli" di SSMS, atau Anda ingin standar pada Unicode.

Jika Anda memperlakukan database sebagai penyimpanan bodoh, sangat mungkin untuk menyimpan string lebar dan pengkodean yang berbeda (bahkan panjang variabel) di VARCHAR (misalnya UTF-8). Masalahnya muncul ketika Anda mencoba untuk menyandikan dan mendekode, terutama jika halaman kode berbeda untuk baris yang berbeda. Ini juga berarti bahwa SQL Server tidak akan dapat menangani data dengan mudah untuk tujuan kueri dalam T-SQL pada kolom yang dikodekan (berpotensi bervariasi).

Menggunakan NVARCHAR menghindari semua ini.

Saya akan merekomendasikan NVARCHAR untuk kolom apa pun yang memiliki data yang dimasukkan pengguna di dalamnya yang relatif tidak dibatasi.

Saya akan merekomendasikan VARCHAR untuk kolom apa pun yang merupakan kunci alami (seperti plat nomor kendaraan, SSN, nomor seri, tag layanan, nomor pesanan, tanda panggilan bandara, dll) yang biasanya ditentukan dan dibatasi oleh standar atau undang-undang atau konvensi. Juga VARCHAR untuk dimasukkan pengguna, dan sangat dibatasi (seperti nomor telepon) atau kode (AKTIF/TUTUP, Y/N, M/F, M/S/D/W, dll). Sama sekali tidak ada alasan untuk menggunakan NVARCHAR untuk itu.

Jadi untuk aturan sederhana:

VARCHAR ketika dijamin dibatasiNVARCHAR sebaliknya



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server DATEPART() vs DATENAME() – Apa Bedanya?

  2. Apakah ada cara untuk mengambil definisi tampilan dari SQL Server menggunakan ADO biasa?

  3. Perbaikan terkait kinerja untuk SQL Server 2012

  4. SQL Server Internal:Operator Bermasalah Pt. Saya – Memindai

  5. Pemeran T-SQL versus Konversi