Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server 2012:batasan SQL dinamis (> 4000 karakter) (terpisah)

Anda tidak perlu membagi teks menjadi beberapa bagian. Anda perlu memastikan bahwa pemotongan tidak terjadi saat Anda menggabungkan string :

Jadi, pastikan bahwa rangkaian pertama bekerja dengan tipe nilai besar (dan dengan demikian menghasilkan tipe nilai besar sebagai hasilnya) dan setiap rangkaian berikutnya harus disimpan dari pemotongan:

set @template=CONVERT(nvarchar(max),'if NOT EXISTS(select * from ' ) + @DestinationDB + ...

(Dengan cara ini, Anda tidak perlu memasukkan konversi di mana-mana )

Ini menghasilkan kesalahan:

declare @t nvarchar(max)

set @t = 'select LEN(''' + REPLICATE('A',3000) + REPLICATE('B',3000) + REPLICATE('C',3000) + ''')'

exec sp_executesql @t

Dan ini menghasilkan hasil 9000:

declare @t nvarchar(max)

set @t = CONVERT(nvarchar(max),'select LEN(''') + REPLICATE('A',3000) + REPLICATE('B',3000) + REPLICATE('C',3000) + ''')'

exec sp_executesql @t


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Query:Bagaimana saya bisa mendapatkan data baris dengan nomor 1000 secara langsung?

  2. Cara terbaik untuk menerapkan jejak audit di SQL Server?

  3. Bagaimana saya bisa menggunakan Date Datatype di sql server?

  4. izin buat tabel ditolak di database 'master'

  5. NewSequentialId pada UniqueIdentifier Clustered Index