Artikel ini menyajikan dua cara untuk memilih baris berdasarkan daftar ID (atau nilai lainnya) di SQL Server. Ini dapat berguna dalam skenario di mana Anda memiliki daftar ID yang dipisahkan koma, dan Anda ingin membuat kueri database untuk baris yang cocok dengan ID tersebut.
Katakanlah Anda memiliki daftar ID berikut:
1,4,6,8
Jadi sekarang Anda ingin membuat kueri tabel untuk catatan yang memiliki salah satu dari nilai tersebut (yaitu 1, 4, 6 atau 8) di kolom ID-nya.
Berikut adalah dua cara untuk melakukannya.
Opsi 1:Operator IN
Salah satu opsi adalah menggunakan IN
operator dalam kueri Anda untuk mengembalikan hanya baris yang ditentukan dalam daftar.
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistId IN (1,4,6,8);
Hasil:
ArtistId ArtistName -------- ------------------------- 1 Iron Maiden 4 Buddy Rich 6 Jim Reeves 8 Maroon 5
Seperti yang Anda lihat, nilai dalam ArtistId
kolom cocok dengan daftar kami.
Opsi 2:Fungsi STRING_SPLIT()
Dimulai dengan SQL Server 2016, STRING_SPLIT()
fungsi dapat digunakan untuk membagi ekspresi karakter menggunakan pemisah yang ditentukan. Dengan kata lain, Anda dapat menggunakannya untuk membagi daftar yang dipisahkan koma.
Berikut ini contoh menggunakan data yang sama seperti pada contoh sebelumnya:
SELECT ArtistId, ArtistName FROM Artists JOIN STRING_SPLIT('1,4,6,8', ',') ON value = ArtistId;
Hasil:
ArtistId ArtistName -------- ------------------------- 1 Iron Maiden 4 Buddy Rich 6 Jim Reeves 8 Maroon 5
Salah satu manfaat dari STRING_SPLIT()
adalah memungkinkan/(memerlukan) Anda untuk menentukan apa yang digunakan sebagai pembatas untuk daftar. Ini berguna jika daftar Anda menggunakan karakter yang berbeda sebagai pembatasnya.
Berikut adalah contoh yang sama, tetapi untuk daftar yang dipisahkan spasi:
SELECT ArtistId, ArtistName FROM Artists JOIN STRING_SPLIT('1 4 6 8', ' ') ON value = ArtistId;
Hasil:
ArtistId ArtistName -------- ------------------------- 1 Iron Maiden 4 Buddy Rich 6 Jim Reeves 8 Maroon 5
Tingkat Kompatibilitas
Perhatikan bahwa STRING_SPLIT()
hanya tersedia pada database dengan tingkat kompatibilitas 130 atau lebih tinggi. Anda dapat mengubah tingkat kompatibilitas database dengan pernyataan berikut:
ALTER DATABASE MyDatabase SET COMPATIBILITY_LEVEL = 130;
Atau untuk membawanya ke level SQL Server 2017:
ALTER DATABASE MyDatabase SET COMPATIBILITY_LEVEL = 140;
Di mana MyDatabase
adalah nama databasenya.
Lihat juga Cara Memeriksa Tingkat Kompatibilitas Database di SQL Server.