Pencarian secara Row pada SQL Server

Pencarian secara Row pada SQL Server

Create: SaldiSaldi | Jumat, 05 Mei 2017 | 18:48:05 WITA | dibaca: 1370

Mencari berdasarkan column adalah hal biasa yang kita lakukan bila bekerja dengan database. Kalau mencari berdasarkan row, apakah memungkinkan dilakukan pada SQL? Untuk mencari tahu, kita coba siapkan data untuk menjawab pertanyaan ini.

Table

Untuk membuatnya sederhana kita akan menggunakan 2 table.

 Table Patterns

Table ini berisi data yang akan kita gunakan untuk mencari. Dalam contoh ini kita mencari ABC, CB dan seterusnya. Pada column Pattern kita masukkan pattern yang akan kita coba cari di-table stream. Kenapa kita perlu table untuk ini? Kita akan coba juga mencari multi-pattern dalam pencariannya.

https://dede.gitlab.io/a/i/p/sql-multi-match-row-tsql/data-patterns.png

Table Stream

Table ini berisi column Code yang akan kita cari dengan row-nya. Seperti yang terlihat, data itu akan kita coba match-kan dengan pattern yang ada diatas.

https://dede.gitlab.io/a/i/p/sql-multi-match-row-tsql/data-patterns.png 

Tujuan Pencarian

Kita ingin mencari di-column Code, tapi dengan melihat dari row-nya. Contohnya pattern ABC (warna merah), maka harus-nya kita mendapatkan 2 dari hasil pencarian kita. Dengan data yang ada, akan di dapat column Id 2-3-4dan 6-7-8. Begitu juga dengan pattern CB (warna orange). Kita akan dapatkan column Id 4-5.

https://dede.gitlab.io/a/i/p/sql-multi-match-row-tsql/multi-match-row-result-resultset.png 

TSQL

Perhatikan query dibawah. T-SQL dibawah memiliki beberapa bagian yang menarik untuk menjawab pertanyaan diatas.

https://dede.gitlab.io/a/i/p/sql-multi-match-row-tsql/multi-match-row-result-tsql.png 

Query diatas terdiri dari 5 bagian. Kita akan melihat bagian perbagian secara detail.

Data dan Pattern

Baris 1 - 15, bagian ini dimaksudkan untuk mempersiapkan data dengan mengabungkan pattern dengan data-row (yang ada di table stream) yang dijadikan serial string. Disini kita manfaatkan fungsi FOR XML untuk membuat serial string dari column Code

https://dede.gitlab.io/a/i/p/sql-multi-match-row-tsql/multi-match-row-result-01.png 

Index Data Stream

Baris 16 - 22, disini juga kita persiapkan data yang akan digunakan pada bagian 5 (Penjumlahan). Disini kita menggunakan fungsi ROW_NUMBER agar mempermudahkan penyatuan data.

https://dede.gitlab.io/a/i/p/sql-multi-match-row-tsql/multi-match-row-result-02.png 

Pencarian

Baris 23 - 58, inti dari query kita ini ada disini. Disini kita mencari row (yang kita sudah jadikan serial string) dengan pattern dan dari sana kita juga mendapatkan position-number dari hasil pencarian itu. Pencarian serial string ini kita lakukan dengan fungsi CHARINDEX.

https://dede.gitlab.io/a/i/p/sql-multi-match-row-tsql/multi-match-row-result-03.png 

Map Index

Baris 68 - 84, hasil dari bagian 3 (Pencarian) akan kita buat menjadi row kembali. Dengan begitu kita akan bisa men-map Index Character dengan Id yang ada di-table stream.

https://dede.gitlab.io/a/i/p/sql-multi-match-row-tsql/multi-match-row-result-04.png 

Penjumlahan

Baris 85 - 93, hasil dari bagian 4 (Map Index) akan kita gabungkan dengan data pada bagian 2 (Index Data Stream). Kita bisa menghubungkan ke 2 resultset itu dengan column No (yang didapat dari fungsi ROW_NUMBER) dan position-number (yang didapat dari fungsi CHARINDEX dan map-index). Setelah itu kita gunakan fungsi SUM untuk mendapatkan total dari column Value dari table stream.

https://dede.gitlab.io/a/i/p/sql-multi-match-row-tsql/multi-match-row-result-05.png 

Penutup

T-SQL diatas memang bisa menjadi solusi. Tapi perlu di ingat cara ini kurang optimize apa bila diterapkan pada aplikasi sebenarnya. Ada beberapa hal yang bisa dimaksimalkan tekniknya, tapi sebagai proof-of-concept bahwa kita bisa melakukan apa yang menjadi tantangan pencarian row. Jawabannya bisa dengan cara diatas.

 

SUMBER : https://www.codepolitan.com/pencarian-secara-row-sql-server-58ca886aa2a8c 



22 KOMENTAR

best essay writing service | 29 Juli 2017 || 15:43:27
" I simply want to say I am just beginner to weblog and absolutely liked youíre blog. Very likely Iím planning to bookmark your blog . You really come with amazing well written articles. Thanks a lot for revealing your web-site. "
Arsitek Jakarta | 31 Agustus 2017 || 15:34:23
" Boleh tahu min untuk pencarian row pada SQL ini biasanya diaplikasikan ke mana saja? Apakah bisa untuk website juga kah? Trims :D "
Aalok | 12 September 2017 || 10:20:04
" great efforts, good content "
Harga Mobil Honda Samarinda Terbaru 2017 | 13 September 2017 || 10:03:33
" good content "
rental mobil semarang | 14 September 2017 || 10:01:47
" nice post "
sewa mobil alphard | 25 September 2017 || 14:41:04
" makasih postingannya bermanfaat "
sewa mobil alphard | 25 September 2017 || 14:41:50
" makasih postingannya bermanfaat "
penirum bandung | 14 Oktober 2017 || 08:37:38
" Much thanks to you a great amount for this and continue sharing. "
photoshop online | 18 Oktober 2017 || 14:00:38
" Thank you so much for showing up, bringing your real authentic self and being such a huge contribution to us all. "
instagram search | 18 Oktober 2017 || 17:52:54
" Terima kasih telah berbagi informasi yang luar biasa "
stiker hologram | 21 Oktober 2017 || 07:02:45
" Terima kasih gan penjelasanya detail dan bermanfaat bagi siapapun yang membutuhkanya. "
despacito lyrics | 25 Oktober 2017 || 11:14:35
" Whether youíre coding on SQL Server, Oracle, DB2, Sybase, MySQL, or some other relational platform, your goal is the same: You want the database to support as many concurrent users as practical while processing queries as quickly as it can. That means you need to minimize locking, I/O, and network traffic, while optimizing space and resource management. "
Obat Aborsi | 20 Desember 2017 || 11:38:57
" Terima kasih sudah mau berbagi "
Sewa Mobil Surabaya | 04 Januari 2018 || 20:37:34
" Apa yang Anda lakukan sangat menentukan masa depan generasi Anak anak bangsa. Saya sangat Menghargai posting ini dan tertarik pada artikel Anda. terima kasih. "
geometry dash | 15 Januari 2018 || 11:06:45
" Thanks for your post. It very helpful. I will use it for reference. "
Voyance audiotel amour | 16 Januari 2018 || 18:26:30
" Thanks for this nice info I like it so much and appreciated your hard work. "
Dissertation Writing Service | 25 Maret 2018 || 07:54:27
" Setting up SQL server is difficult for many people. However, the tutorial that you have shared here, really helps them to have best skills and idea to install and configure it. "
Dissertation Writing Service | 25 Maret 2018 || 08:00:03
" Setting up SQL server is difficult for many people. However, the tutorial that you have shared here, really helps them to have best skills and idea to install and configure it. "
obat penggugur kandungan | 07 Mei 2018 || 23:41:11
" " Thanks for this nice info I like it so much and appreciated your hard work. " "
192.168.0.1 | 08 Mei 2018 || 15:52:52
" While going through many posts and articles I found this article the best in order to provide the user best information for adware removal process. "
spanish dictionary | 07 Juni 2018 || 09:18:14
" Thanks to this article I can learn more things. Expand your knowledge and abilities. Actually the article is very practical. "
facebook video | 06 Agustus 2018 || 08:56:08
" Thank you so much for showing up, bringing your real authentic self and being such a huge contribution to us all. "



ISI KOMENTAR

NAMA

WEBSITE

KOMENTAR


Captcha Sepakbola
Apakah anda manusia?Lebih baik lagi kalau anda menyukai sepak bola
Sebutkan pemain sepak bola disamping:

Captcha Sepakbola by codingwear








  • $DCC = NEW XXI("Solidaritas","Loyalitas","Kualitas");
  • PELATIHAN KAMPUS
  • Pelatihan Komputer (DIGITAL SCHOOL)
  • Study Tour GoTv
  • IT FUN