Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Perintah Barang T-SQL

Gagasan utama seputar fungsi SQL Server yang disebut STUFF adalah menggabungkan beberapa kolom menjadi satu kolom dengan lebih banyak fleksibilitas daripada yang disediakan fungsi CONCAT. Selain itu, STUFF dapat dikombinasikan dengan teknik lain untuk beberapa efek yang menarik.

Dalam artikel ini, kita akan mengeksplorasi kemungkinan yang disediakan oleh perintah STUFF untuk spesialis Database SQL.

Fungsi T-SQL STUFF

Pertama-tama mari kita lihat definisi resmi fungsi STUFF dari Microsoft:

Fungsi STUFF menyisipkan string ke string lain. Ini menghapus panjang karakter tertentu dalam string pertama di posisi awal dan kemudian memasukkan string kedua ke string pertama di posisi awal.

Jadi, saat Anda menggunakan perintah STUFF, Anda mengatur ulang data kolom.

Mari kita lihat beberapa contohnya.

Yang pertama adalah output dari perintah STUFF – string ABCDEFG asli akan diisi dengan string XXX.

SELECT STUFF('ABCDEFG',3,3,'XXX');

Kami akan menganalisis output ini untuk memahami sepenuhnya perintah STUFF:

Sekarang, parameter ketiga ditingkatkan menjadi nilai 4,5,6.

SELECT STUFF('ABCDEFG',3,4,'XXX');
SELECT STUFF('ABCDEFG',3,5,'XXX');
SELECT STUFF('ABCDEFG',3,6,'XXX');

Penjelasan Panggilan Fungsi

Penggantian terjadi pada karakter ketiga dari string ABCDEFG asli di setiap eksekusi. Satu-satunya perbedaan adalah jumlah karakter yang ditentukan untuk dihapus melalui parameter panjang hapus .

Jadi, ketika panjang hapus parameter dari posisi awal parameter lebih panjang dari string asli, data terpotong.

Misalnya, string asli kami memiliki panjang 7 karakter. Fungsi STUFF dimulai pada posisi 3 dan berjalan selama 5 karakter lagi. Karena 8 lebih dari panjang string asli 7, nilainya dikembalikan sebagai ABXXX.

Penggunaan STUFF Berkali-kali dalam Kueri yang Sama

Anda dapat membuat sarang perintah STUFF di dalam perintah STUFF lain dan menggunakannya sebanyak yang diperlukan. Namun, Anda harus mempertimbangkan bagaimana pengaruhnya terhadap kueri tingkat produksi. Setiap panggilan bersarang berjalan untuk setiap baris data yang dikembalikan.

SELECT STUFF(STUFF('ABCDEFG',1,1,'1'),7,1,'7') as StuffExample5;

Dalam contoh ini, karakter pertama dari string asli diganti dengan 1 karakter, dan karakter terakhir diganti dengan 7 karakter.

STUFF dan ForXML

ForXML adalah fitur di SQL Server yang dapat mengubah kumpulan hasil kueri SQL menjadi hasil berformat XML.

STUFF juga dapat digabungkan dengan fungsionalitas SQL Server lainnya seperti ForXML. Ini membantu mengkonsolidasikan data untuk tujuan pelaporan. Mari kita ambil struktur tabel berikut:

Misalkan Anda ingin laporan dengan 2 kolom. Kolom pertama adalah USER_NAME , dan yang kedua adalah peran . yang dipisahkan koma kolom untuk setiap peran yang dipegang pengguna. Bagaimana ini bisa dicapai dalam T-SQL murni?

Bangun struktur tabel dan masukkan data:

CREATE TABLE 
#USER
(
USER_ID INT,
USER_NAME VARCHAR(50)
)

CREATE TABLE
#USER_ROLES
(
USER_ID INT,
ROLE VARCHAR(50)
)


INSERT INTO #USER VALUES(1,'Edward')
INSERT INTO #USER VALUES(2,'John')
INSERT INTO #USER VALUES(3,'Mark')

INSERT INTO #USER_ROLES VALUES(1,'Admin')
INSERT INTO #USER_ROLES VALUES(1,'Writer')
INSERT INTO #USER_ROLES VALUES(1,'Form')
INSERT INTO #USER_ROLES VALUES(2,'Writer')
INSERT INTO #USER_ROLES VALUES(3,'Form')
INSERT INTO #USER_ROLES VALUES(3,'Writer');

Gunakan perintah STUFF:

SELECT 
   U.USER_NAME,
   STUFF((SELECT ',' + UR.ROLE 
          FROM #USER_ROLES UR
          WHERE UR.USER_ID = U.USER_ID
          FOR XML PATH('')), 1, 1, '') [ROLES]
FROM #USER U
GROUP BY U.USER_NAME, U.USER_ID
ORDER BY 1

Dalam contoh ini, kueri dalam digabungkan ke setiap USER_ID. Perintah STUFF digunakan untuk menggantikan koma awal. Hasilnya, kami memiliki daftar dipisahkan koma yang bagus dari setiap pengguna dengan peran masing-masing.

Kasus Penggunaan

Penyembunyikan Data

SQL Server menyediakan solusi untuk penyembunyian data dinamis. Namun, STUFF dapat digunakan untuk mengaburkan data sensitif saat ditampilkan. Bayangkan sebuah tampilan duduk di atas tabel yang memiliki bidang PII pelanggan seperti SSN. Tampilan dapat menggunakan perintah STUFF untuk menutupi semuanya kecuali 4 digit terakhir SSN.

Konsolidasi Data

Seperti yang ditunjukkan dengan FORXML dan STUFF, T-SQL menawarkan kemampuan untuk mengkonsolidasikan data ke dalam kolom tunggal dengan semacam pengidentifikasi utama. Dalam contoh ini, itu adalah USER_NAME. Namun, jenis analisis ini cukup umum dalam arsitektur pelaporan basis data.

Ringkasan

Jadi, kami membahas parameter perintah STUFF di T-SQL dan memahami bagaimana perintah ini dibandingkan dengan CONCAT. Kami mendemonstrasikan contoh sederhana dan kompleks dari perintah STUFF dan membuat daftar beberapa kasus penggunaan di mana STUFF dapat diterapkan.

Ini adalah perintah berharga yang dapat menjadi alat yang hebat untuk dimiliki di bawah ikat pinggang Anda. Beri komentar dengan kasus penggunaan lain untuk perintah STUFF.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara memantau kesehatan instance database

  2. Perubahan Konektor Data pada tahun 2020.24

  3. Risiko Saat Menggunakan Memori Dinamis dalam Hyper-V

  4. WhoIsActive Runner

  5. Hekaton dengan twist:TVP dalam memori – Bagian 3