|
|
Diposting pada 13/06/2018 11.07.11
|
|
|

Pertama, varchar(max) adalah pengganti jenis data teks yang digunakan oleh Microsoft,Jenis kolom yang lebih lama seperti teks dapat dibatalkan di versi berikutnya。 Jadi teks apa yang bisa disimpan, varchar( max) pasti bisa disimpan. Faktanya, jumlah karakter yang dapat disimpannya sangat besar. 420 juta karakter yang dapat disimpan sulit dijangkau, yang saya yakini sulit dijangkau.
Saya hanya tahu sebelumnyateks dan gambar adalah jenis data yang mungkin usang oleh SQL Server, tetapi alasan spesifiknya tidak jelas, ketika saya membaca hari ini, saya menemukan perbedaan antara teks dan varchar(max) dan nvarchar(max), terutama karena pembatasan operator, teks hanya dapat digunakan oleh fungsi-fungsi berikut:
| fungsi | Pernyataan | | PANJANG DATA | TEKS BACA | | PATINDEX | ATUR UKURAN TEKS | | SUBSTRING | MEMPERBARUI TEKS | | TEKS | TULIS TEKS | | TEKS VALID | |
Misalnya, jika jenis data kolom "Teks" adalah teks, maka jenis data tidak dapat digunakan untuk operasi seperti "=" dan "left()", seperti contoh berikut:
Buat tabel dan isi data:
if exists (pilih * dari sysobjects di mana id = OBJECT_ID('[asdf]') dan OBJECTPROPERTY(id, 'IsUserTable') = 1)
TABEL DROP [asdf]
BUAT TABEL [asdf] (
[inttest] [int] IDENTITAS (1, 1) BUKAN NOL ,
[teks] [teks] NOL ,
[varcharmax] varchar (maks) NULL )
UBAH TABEL [asdf] DENGAN NOCHECK ADD CONSTRAINT [PK_asdf] KUNCI UTAMA NONCLUSTERED ( [inttest] )
ATUR IDENTITY_INSERT [asdf] AKTIF
INSERT [asdf] ( [inttest] , [text] , [varcharmax] ) VALUES ( 1 , '1111111' , '1111111' )
MATIKAN IDENTITY_INSERT [asdf]
Jalankan kueri:
Pertanyaan 1: PILIH [teks]
,[varcharmax]
DARI [testDB]. [dbo]. [ASDF]
di mana
[text] ='11111' DAN
[varcharmax] = '1111111'
Pesan kesalahan berikut muncul:
Msg 402, Tingkat 16, Negara Bagian 1, Baris 1
Jenis data teks dan varchar tidak kompatibel dalam operator yang sama dengan.
Pertanyaan 2: PILIH [teks]
,[varcharmax]
DARI [testDB]. [dbo]. [ASDF]
di mana
[varcharmax] = '1111111'
dapat berjalan dengan sukses
Di MS SQL2005 dan yang lebih baru, tambahkan tipe data bernilai besar (varchar(max), nvarchar(max), varbinary(max)). Tipe data bernilai besar dapat menyimpan hingga 2^30-1 byte data.
Tipe data ini secara perilaku identik dengan jenis data yang lebih kecil varchar, nvarchar, dan varbinary.
Klaim Microsoft adalah untuk mengganti tipe data teks, ntext, dan gambar sebelumnya dengan tipe data ini, dan korespondensi di antara keduanya adalah:
varchar (maks) -------teks;
nvarchar(maks)-----nteks;
varbinary(maks)----gambar.
Dengan tipe data bernilai besar, jauh lebih fleksibel untuk bekerja dengan data bernilai besar daripada sebelumnya. Misalnya, teks tidak dapat digunakan 'seperti' sebelumnya, tetapi setelah varchar(max), tidak ada masalah ini, karena varchar(max) sama dengan varchar(n) dalam perilaku, sehingga apa yang dapat digunakan di varcahr dapat digunakan pada varchar(max).
Selain itu, ini mendukung penggunaan pemicu AFTER pada referensi kolom tipe data bernilai besar dalam tabel yang disisipkan dan dihapus. teks tidak bagus, singkatnya, setelah menggunakan tipe data nilai besar, saya "pinggang saya tidak lagi sakit, kaki saya tidak sakit, dan saya bisa naik ke lantai enam dalam satu tarikan napas". Tunggu apalagi, gunakan tipe nilai besar.
|
Mantan:Uh-huh, eh-huh, eh-huhDepan:ef (ekspresi lambda) mengkueri beberapa pengecualian yang ditemui dalam data
|