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

SET TEKSTIZE Tidak Bekerja di SQL Server? Periksa ini.

Sudahkah Anda menggunakan SET TEXTSIZE untuk membatasi data yang dikembalikan oleh kueri, tetapi ternyata tidak berfungsi? Anda menemukan bahwa SELECT . Anda kueri terus mengembalikan jumlah teks penuh, terlepas dari TEXTSIZE nilai?

Baca terus. Anda bisa saja melakukan kesalahan yang jelas ini.

Ketika saya pertama kali menemukan TEXTSIZE pilihan, saya memutuskan untuk menjalankan tes cepat. Tapi itu tidak berhasil. Saya mencoba beberapa kali dengan berbagai TEXTSIZE nilai, tapi sepertinya tidak ada yang berhasil.

“Kenapa tidak berhasil?” Saya bertanya-tanya.

Tapi kemudian diklik. Saya membaca ulang dokumentasi dan menyadari bahwa saya tidak menggunakan ukuran string yang benar untuk tipe data saya.

TEXTSIZE hanya berfungsi pada tipe data berikut:

  • varchar(maks)
  • nvarchar(maks)
  • varbinary(maks)
  • teks
  • nteks
  • gambar

Jika Anda melihat tiga yang pertama, perhatikan bahwa mereka menggunakan max untuk argumen. Ini berarti mereka menggunakan string/ukuran penyimpanan maksimum.

Saya mengujinya terhadap kolom bertipe nvarchar(100) , varchar(255) , dll. Tidak heran itu tidak berfungsi.

Contoh

Berikut adalah contoh untuk menunjukkan apa yang saya maksud.

GUNAKAN Tes; DROP TABLE JIKA ADA TextSizeTest;BUAT TABEL TextSizeTest ( varchar50 varchar(50), varcharMax varchar(max), nvarcharMax nvarchar(max) ); INSERT INTO TextSizeTestVALUES ( 'Dragonfruit', 'Dragonfruit', 'Dragonfruit' );SET TEXTSIZE 4;SELECT * FROM TextSizeTest;

Hasil:

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

Di sini, saya mengatur TEXTSIZE nilai ke 4 , tetapi teks lengkap varchar(50) kolom tetap utuh. Kolom ini tidak terpengaruh oleh SET TEXTSIZE . Dan begitulah seharusnya cara kerjanya.

Hanya dua kolom lainnya yang terpengaruh, karena mereka adalah varchar(max) dan nvarchar(max) masing-masing.

Juga, alasan nvarchar kolom lebih pendek dari varchar adalah karena menggunakan dua byte untuk setiap karakter (dibandingkan dengan varchar satu byte per karakter).

Jadi, jika Anda mengalami masalah dengan SET TEXTSIZE , periksa tipe data Anda.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana ROW_NUMBER() Bekerja di SQL Server

  2. Cara Menghapus Instalasi SQL Server Management Studio (SSMS) - Tutorial SQL Server/TSQL Bagian 23.1

  3. Konversi Baris ke kolom menggunakan 'Pivot' di SQL Server

  4. Perbarui catatan dalam tabel dari CTE

  5. Cara menggunakan klausa Where dalam Select Statement di SQL Server - Tutorial SQL Server / TSQL Bagian 109