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

Gunakan SET TEXTSIZE untuk Membatasi Data yang Dikembalikan untuk Setiap Baris di SQL Server

Di SQL Server, SET TEXTSIZE pernyataan menentukan ukuran varchar(max) , nvarchar(maks) , varbinary(maks) , teks , nteks , dan gambar data dikembalikan oleh SELECT pernyataan.

Microsoft menyarankan agar teks , nteks , dan gambar akan dihapus dalam versi SQL Server yang akan datang, jadi Anda harus menghindari penggunaan tipe data ini dalam pekerjaan pengembangan baru, dan berencana untuk memodifikasi aplikasi yang saat ini menggunakannya untuk menggunakan varchar(max) , nvarchar(maks) , atau varbinary(maks) sebagai gantinya.

Contoh 1 – Penggunaan Dasar

Berikut ini contoh pengaturan TEXTSIZE nilai.

SETEL UKURAN TEKS 2048;

Itu menetapkan TEXTSIZE menjadi 2048 byte.

Contoh 2 – Periksa Nilai TEXTSIZE

Anda dapat memeriksa TEXTSIZE saat ini nilai dengan @@TEXTSIZE :

PILIH @@TEXTSIZE SEBAGAI [Ukuran Teks];

Hasil:

+-------------+| Ukuran Teks ||-------------|| 2048 |+-------------+

Contoh 3 – Bagaimana Mempengaruhi Hasil Kueri

Berikut adalah contoh yang menunjukkan bagaimana TEXTSIZE nilai dapat memengaruhi hasil yang dikembalikan dalam SELECT kueri.

Pertama mari kita buat tabel, masukkan beberapa teks, lalu pilih.

UJI PENGGUNAAN;BUAT TABEL TextSizeTest ( varchar50 varchar(50), varcharMax varchar(max), nvarcharMax nvarchar(max) ); INSERT INTO TextSizeTestVALUES ( 'Dragonfruit', 'Dragonfruit', 'Dragonfruit' );SELECT * FROM TextSizeTest;

Hasil (normal):

+-------------+--------------+---------------+| varchar50 | varcharMax | nvarcharMax ||-------------+--------------+---------------|| Buah naga | Buah naga | Buah naga |+-------------+--------------+---------------+ 

Inilah yang biasanya kita harapkan. Ini mengembalikan teks lengkap di dalam setiap kolom karena setiap baris teks membutuhkan kurang dari 2048 byte (yang saya atur TEXTSIZE pada contoh sebelumnya).

Tapi inilah yang terjadi jika saya mengurangi TEXTSIZE nilai:

ATUR UKURAN TEKS 4;PILIH * DARI TextSizeTest;

Hasil:

+-------------+--------------+---------------+| varchar50 | varcharMax | nvarcharMax ||-------------+--------------+---------------|| Buah naga | Tarik | Dr |+-------------+--------------+---------------+ 

Kolom pertama tidak terpengaruh, karena ini bukan kolom "maks". Maksud saya adalah, ini adalah varchar(50) dan bukan varchar(maks) . TEXTSIZE opsi hanya memengaruhi kolom yang ditentukan dengan max .

Kolom kedua mengembalikan empat karakter pertama. Ini karena kami menyetel TEXTSIZE nilai ke 4, dan empat karakter pertama menggunakan 4 byte.

Kolom ketiga hanya mengembalikan 2 karakter pertama. Ini karena ini adalah nvarchar kolom. Dalam hal ini, dua karakter pertama menggunakan 4 byte.

Contoh 4 – Setel Ulang Nilainya

Satu hal yang harus diperhatikan adalah menentukan SET TEXTSIZE 0 sebenarnya "mengatur ulang" ke nilai default 4096.

SET TEXTSIZE 0;SELECT @@TEXTSIZE AS [@@TEXTSIZE];SELECT * FROM TextSizeTest;

Hasil:

+-------------+| @@TEXTSIZE ||--------------|| 4096 |+-------------+(1 baris terpengaruh)+-------------+------------ --+---------------+| varchar50 | varcharMax | nvarcharMax ||-------------+--------------+---------------|| Buah naga | Buah naga | Buah Naga |+-------------+--------------+---------------+(1 baris terpengaruh)

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memecahkan masalah Replikasi SQL Server

  2. Bagaimana cara menghapus dari beberapa tabel menggunakan INNER JOIN di SQL server

  3. Cara membuat Tabel dengan menggunakan GUI Di SQL Server - Tutorial SQL Server / T-SQL Part 37

  4. Buat kolom sql secara dinamis

  5. Menggunakan kondisi if dalam menyisipkan SQL Server