Rumah > pangkalan data > tutorial mysql > Mengapakah nilai NVARCHAR(MAX) saya dipenggal kepada 4000 aksara dalam SQL Server 2005?

Mengapakah nilai NVARCHAR(MAX) saya dipenggal kepada 4000 aksara dalam SQL Server 2005?

DDD
Lepaskan: 2025-01-01 06:56:10
asal
291 orang telah melayarinya

Why are my NVARCHAR(MAX) values truncated to 4000 characters in SQL Server 2005?

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...
  ....
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan