Rumah >pangkalan data >tutorial mysql >Mengapa Pembolehubah Nvarchar(Max) Saya Dipenggal pada 4000 Aksara?

Mengapa Pembolehubah Nvarchar(Max) Saya Dipenggal pada 4000 Aksara?

DDD
DDDasal
2024-12-31 15:43:091009semak imbas

Why is My Nvarchar(Max) Variable Truncated at 4000 Characters?

Pemangkasan Tidak Dijangka dalam Data Nvarchar(Maks)

Walaupun mengisytiharkan pembolehubah @SQL1 sebagai nvarchar(maks), yang boleh menyimpan sehingga 2GB daripada data, hasilnya dipotong pada 4000 aksara. Ini mungkin kelihatan membingungkan, terutamanya memandangkan kapasiti data yang luas bagi nvarchar(maks).

Isunya terletak pada gabungan rentetan dalam pembolehubah @SQL1. Sebelum diberikan kepada @SQL1, data disimpan sebagai koleksi rentetan dengan panjang kurang daripada 4000 aksara. Apabila rentetan ini disatukan, ia mengekalkan panjang maksimumnya. Akibatnya, tugasan kepada @SQL1 mencipta rentetan dengan panjang 4000 aksara, walaupun jenis data yang diisytiharkan membenarkan lebih banyak lagi.

Untuk mengelakkan pemotongan ini, pastikan semua rentetan yang digabungkan adalah daripada nvarchar (maks) jenis data sebelum melaksanakan tugasan. Ini boleh dicapai dengan menghantar rentetan yang lebih pendek secara eksplisit ke nvarchar(maks). Contohnya:

SET @SQL1 = N''
SET @SQL1 = @SQL1 + N'SELECT DISTINCT Venue...'

Dengan menghantar rentetan malar sebagai nvarchar(maks), keseluruhan rentetan akan menjadi nvarchar(maks) dan isu pemotongan akan diselesaikan.

Atas ialah kandungan terperinci Mengapa Pembolehubah Nvarchar(Max) Saya Dipenggal pada 4000 Aksara?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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