Pemangkasan dalam Nvarchar(Max) kepada 4000 Aksara dalam TSQL
Isu ini timbul apabila cuba menyimpan sebahagian besar teks dalam pembolehubah yang diisytiharkan sebagai Nvarchar(Max) dalam TSQL. Anehnya, pembolehubah hanya memuatkan 4000 aksara dan bukannya 8000 yang dijangkakan.
Penjelasan terletak pada sifat penetapan jenis data dalam TSQL. Mengisytiharkan pembolehubah sebagai Nvarchar(Max) tidak secara automatik memberikan atribut Max. Sebaliknya, pembolehubah pada mulanya bertindak sebagai koleksi pemalar rentetan yang lebih kecil (kurang daripada 4000 aksara). Apabila pemalar ini disatukan bersama, pembolehubah @SQL1 yang terhasil masih mempunyai had aksara 4000.
Untuk menyelesaikan isu ini, pastikan bahagian kanan penyataan tugasan untuk @SQL1 sudah pun Nvarchar( Maks) pembolehubah. Ini akan menjamin bahawa nilai yang terhasil disimpan dengan had aksara maksimum yang dibenarkan.
Sebagai contoh, kod berikut akan menetapkan jenis data Nvarchar(Max) dengan betul kepada @SQL1 dari awal:
SET @SQL1 = NVARCHAR(Max) SET @SQL1 = @SQL1 + 'SELECT DISTINCT VenueInfo.VenueID, VenueInfo.VenueName...
Pendekatan ini menghalang gelagat pembahagian integer, di mana jenis data disimpulkan berdasarkan keutamaan pengendali. Dalam kes ini, keutamaan tugasan sentiasa terakhir, serupa dengan bahasa pengaturcaraan lain. Oleh itu, tugasan di atas menganggap keseluruhan rentetan sebagai Nvarchar(Max) dari awal lagi.
Atas ialah kandungan terperinci Mengapa Nvarchar(Max) dalam T-SQL Memenggal kepada 4000 Aksara?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!