UPDATETEXT (Transact-SQL)
Berlaku untuk: SQL Server Azure SQL Managed Instance
Memperbarui bidang teks, ntext, atau gambar yang sudah ada. Gunakan UPDATETEXT untuk mengubah hanya sebagian kolom teks, ntext, atau gambar . Gunakan WRITETEXT untuk memperbarui dan mengganti seluruh bidang teks, ntext, atau gambar .
Penting
Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Gunakan jenis data bernilai besar dan . Tulis klausul pernyataan UPDATE sebagai gantinya.
Sintaks
UPDATETEXT [BULK] { table_name.dest_column_name dest_text_ptr }
{ NULL | insert_offset }
{ NULL | delete_length }
[ WITH LOG ]
[ inserted_data
| { table_name.src_column_name src_text_ptr } ]
Argumen
MASSAL
Memungkinkan alat unggah untuk mengunggah aliran data biner. Aliran harus disediakan oleh alat di tingkat protokol TDS. Saat aliran data tidak ada, prosesor kueri mengabaikan opsi MASSAL.
Penting
Kami menyarankan agar opsi MASSAL tidak digunakan dalam aplikasi berbasis SQL Server. Opsi ini mungkin diubah atau dihapus di versi SQL Server yang akan datang.
table_name . dest_column_name
Adalah nama tabel dan teks, ntext, atau kolom gambar yang akan diperbarui. Nama tabel dan nama kolom harus mematuhi aturan untuk pengidentifikasi. Menentukan nama database dan nama pemilik bersifat opsional.
dest_text_ptr
Adalah nilai penunjuk teks (dikembalikan oleh fungsi TEXTPTR) yang menunjuk ke data teks, ntext, atau gambar yang akan diperbarui. dest_text_ptr harus biner(16).
insert_offset
Adalah posisi awal berbasis nol untuk pembaruan. Untuk kolom teks atau gambar , insert_offset adalah jumlah byte yang akan dilewati dari awal kolom yang ada sebelum menyisipkan data baru. Untuk kolom ntext , insert_offsetadalah jumlah karakter (setiap karakter ntext menggunakan 2 byte). Data teks, ntext, atau gambar yang ada yang dimulai pada posisi awal berbasis nol ini digeser ke kanan untuk memberi ruang bagi data baru. Nilai 0 menyisipkan data baru di awal data yang ada. Nilai NULL menambahkan data baru ke nilai data yang ada.
delete_length
Apakah panjang data yang akan dihapus dari kolom teks, ntext, atau gambar yang ada, dimulai dari posisi insert_offset. Nilai delete_lengthditentukan dalam byte untuk kolom teks dan gambar dan dalam karakter untuk kolom ntext . Setiap karakter ntext menggunakan 2 byte. Nilai 0 tidak menghapus data. Nilai NULL menghapus semua data dari posisi insert_offset ke akhir kolom teks atau gambar yang ada.
DENGAN LOG
Pengelogan ditentukan oleh model pemulihan yang berlaku untuk database.
inserted_data
Apakah data yang akan disisipkan ke dalam kolom teks, ntext, atau gambar yang ada di lokasi insert_offset. Ini adalah karakter tunggal, nchar, varchar, nvarchar, biner, varbinary, teks, ntext, atau nilai gambar. inserted_data bisa berupa literal atau variabel.
table_name.src_column_name
Adalah nama tabel dan teks, ntext, atau kolom gambar yang digunakan sebagai sumber data yang disisipkan. Nama tabel dan nama kolom harus mematuhi aturan untuk pengidentifikasi.
src_text_ptr
Adalah nilai penunjuk teks (dikembalikan oleh fungsi TEXTPTR) yang menunjuk ke kolom teks, ntext, atau gambar yang digunakan sebagai sumber data yang disisipkan.
Catatan
nilai scr_text_ptr tidak boleh sama dengan nilai dest_text_ptr.
Keterangan
Data yang baru disisipkan dapat berupa konstanta inserted_data tunggal, nama tabel, nama kolom, atau penunjuk teks.
Memperbarui tindakan | Parameter UPDATETEXT |
---|---|
Untuk mengganti data yang sudah ada | Tentukan nilai insert_offset nonnull, nilai delete_length bukan nol, dan data baru yang akan disisipkan. |
Untuk menghapus data yang sudah ada | Tentukan nilai insert_offset nonnull dan delete_length bukan nol. Jangan tentukan data baru yang akan disisipkan. |
Untuk menyisipkan data baru | Tentukan nilai insert_offset, delete_length 0, dan data baru yang akan disisipkan. |
Untuk performa terbaik, sebaiknya teks, ntext, dan data gambar dimasukkan atau diperbarui dalam ukuran potongan yang merupakan kelipatan 8.040 byte.
Di SQL Server, penunjuk teks dalam baris ke teks, ntext, atau data gambar mungkin ada tetapi mungkin tidak valid. Untuk informasi tentang opsi teks dalam baris, lihat sp_tableoption (Transact-SQL). Untuk informasi tentang membatalkan penunjuk teks, lihat sp_invalidate_textptr (Transact-SQL).
Untuk menginisialisasi kolom teks ke NULL, gunakan WRITETEXT; UPDATETEXT menginisialisasi kolom teks ke string kosong.
Izin
Memerlukan izin UPDATE pada tabel yang ditentukan.
Contoh
Contoh berikut menempatkan penunjuk teks ke dalam variabel @ptrval
lokal , lalu menggunakan UPDATETEXT
untuk memperbarui kesalahan ejaan.
Catatan
Untuk menjalankan contoh ini, Anda harus menginstal database pub.
USE pubs;
GO
ALTER DATABASE pubs SET RECOVERY SIMPLE;
GO
DECLARE @ptrval BINARY(16);
SELECT @ptrval = TEXTPTR(pr_info)
FROM pub_info pr, publishers p
WHERE p.pub_id = pr.pub_id
AND p.pub_name = 'New Moon Books'
UPDATETEXT pub_info.pr_info @ptrval 88 1 'b';
GO
ALTER DATABASE pubs SET RECOVERY FULL;
GO