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

Jenis teks SQL Server vs. tipe data varchar

TEXT digunakan untuk potongan data string yang besar. Jika panjang bidang melebihi ambang batas tertentu, teks akan disimpan di luar baris.

VARCHAR selalu disimpan dalam baris dan memiliki batas 8000 karakter. Jika Anda mencoba membuat VARCHAR(x) , di mana x> 8000 , Anda mendapatkan kesalahan:

Server:Msg 131, Level 15, State 3, Line 1

Ukuran () yang diberikan untuk tipe 'varchar' melebihi maksimum yang diizinkan untuk semua tipe data (8000)

Batasan panjang ini tidak menyangkut VARCHAR(MAX) di SQL Server 2005 , yang mungkin disimpan di luar baris, seperti TEXT .

Perhatikan bahwa MAX bukan semacam konstanta di sini, VARCHAR dan VARCHAR(MAX) adalah tipe yang sangat berbeda, yang terakhir sangat dekat dengan TEXT .

Di versi SQL Server sebelumnya Anda tidak dapat mengakses TEXT langsung, Anda hanya bisa mendapatkan TEXTPTR dan gunakan di READTEXT dan WRITETEXT fungsi.

Di SQL Server 2005 Anda dapat langsung mengakses TEXT kolom (meskipun Anda masih memerlukan pemeran eksplisit ke VARCHAR untuk menetapkan nilai bagi mereka).

TEXT bagus:

  • Jika Anda perlu menyimpan teks besar di database Anda
  • Jika Anda tidak mencari nilai kolom
  • Jika Anda jarang memilih kolom ini dan tidak bergabung di dalamnya.

VARCHAR bagus:

  • Jika Anda menyimpan string kecil
  • Jika Anda mencari nilai string
  • Jika Anda selalu memilihnya atau menggunakannya untuk bergabung.

Dengan memilih di sini maksud saya mengeluarkan pertanyaan apa pun yang mengembalikan nilai kolom.

Dengan mencari di sini maksud saya mengeluarkan pertanyaan apa pun yang hasilnya bergantung pada nilai TEXT atau VARCHAR kolom. Ini termasuk menggunakannya di JOIN any atau WHERE kondisi.

Sebagai TEXT disimpan di luar baris, kueri tidak melibatkan TEXT kolom biasanya lebih cepat.

Beberapa contoh TEXT baik untuk:

  • Komentar blog
  • Halaman Wiki
  • Sumber kode

Beberapa contoh VARCHAR baik untuk:

  • Nama pengguna
  • Judul halaman
  • Nama file

Sebagai aturan praktis, jika Anda membutuhkan nilai teks melebihi 200 karakter DAN jangan gunakan join pada kolom ini, gunakan TEXT .

Jika tidak, gunakan VARCHAR .

P.S. Hal yang sama berlaku untuk UNICODE mengaktifkan NTEXT dan NVARCHAR juga, yang harus Anda gunakan untuk contoh di atas.

P.P.S. Hal yang sama berlaku untuk VARCHAR(MAX) dan NVARCHAR(MAX) bahwa SQL Server 2005+ menggunakan alih-alih TEXT dan NTEXT . Anda harus mengaktifkan large value types out of row untuk mereka dengan sp_tableoption jika Anda ingin mereka selalu disimpan di luar baris.

Seperti disebutkan di atas dan di sini , TEXT akan ditinggalkan dalam rilis mendatang:

text in row opsi akan dihapus di versi SQL Server yang akan datang . Hindari menggunakan opsi ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan text in row . Kami menyarankan Anda menyimpan data besar dengan menggunakan varchar(max) , nvarchar(max) , atau varbinary(max) tipe data. Untuk mengontrol perilaku in-row dan out-of-row dari tipe data ini, gunakan large value types out of row pilihan.



  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 Setara dengan GROUP_CONCAT()

  2. Apakah mungkin untuk menetapkan batas waktu untuk kueri SQL di Microsoft SQL Server?

  3. Berapa ukuran yang Anda gunakan untuk varchar(MAX) dalam deklarasi parameter Anda?

  4. Tidak dapat menggunakan UPDATE dengan klausa OUTPUT saat pemicu ada di atas meja

  5. Permintaan T-SQL untuk menampilkan definisi tabel?