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

2 Cara Memilih Baris yang Cocok dengan Semua Item dalam Daftar (T-SQL)

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Beban Tambahan di SSIS

  2. Model data

  3. Efek Samping yang Tak Terduga dari Menambahkan Indeks yang Difilter

  4. Cara Menemukan Nilai Maksimum Kolom Numerik di SQL

  5. Penghentian Salesforce TLS 1.0