Mendapatkan Nilai Nvarchar(Maks) Terpenggal
Dalam SQL Server 2005, anda mungkin menghadapi isu di mana nilai Nvarchar(Max) hanya kembali 4000 aksara dan bukannya 8000 yang dijangkakan. Pemangkasan ini berlaku kerana senario tertentu dalam kod yang disediakan.
Memahami Pengisytiharan
Pembolehubah @SQL1 diisytiharkan sebagai NVARCHAR(Max), yang membolehkannya menyimpan sehingga 2GB data. Walau bagaimanapun, jenis data ini tidak diberikan sehingga operasi tugasan pertama.
Proses Penggabungjalinan
Dalam kod yang disediakan, rentetan dibina dengan menggabungkan satu siri pemalar dan pembolehubah yang kesemuanya kurang daripada 4000 aksara. Sebelum diberikan kepada @SQL1, rentetan bercantum masih dianggap sebagai koleksi rentetan yang lebih kecil.
Keutamaan Jenis Data
Apabila tugasan kepada @SQL1 berlaku, data jenis pemalar (Nvarchar(Max)) mengatasi jenis data rentetan bercantum (yang berkesan Nvarchar(4000)). Ini mengakibatkan pemangkasan rentetan akhir kepada 4000 aksara.
Penyelesaian
Untuk menyelesaikan isu ini, pastikan jenis data pemalar yang digabungkan dengan @SQL1 juga Nvarchar(Maks). Ini boleh dicapai dengan menggunakan kod berikut:
SET @SQL1 = '' SET @SQL1 = @SQL1 + 'SELECT DISTINCT Venue... ....
Dengan menetapkan @SQL1 kepada rentetan kosong dahulu, operasi penggabungan akan sentiasa menghasilkan nilai Nvarchar(Max), menghalang isu pemotongan.
Atas ialah kandungan terperinci Mengapakah nilai NVARCHAR(MAX) saya dipenggal kepada 4000 aksara dalam SQL Server 2005?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!