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 ke4
, tetapi teks lengkapvarchar(50)
kolom tetap utuh. Kolom ini tidak terpengaruh olehSET TEXTSIZE
. Dan begitulah seharusnya cara kerjanya.Hanya dua kolom lainnya yang terpengaruh, karena mereka adalah
varchar(max)
dannvarchar(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.