Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Klausa SQL IN Dalam Prosedur Tersimpan

Ada beberapa cara untuk melakukannya:

  1. SQL Dinamis, seperti yang ditunjukkan dalam artikel ini:http://asheej.blogspot.com/2012/04/how-to-use-ms-sql-in-clause-with.html

  2. Tentukan setiap item dalam variabel (ini bisa menjadi sangat buruk jika Anda memiliki banyak):

    @var1 varchar(20),@var2 varchar(20),@var3 varchar(20)

  3. Tulis fungsi split untuk mengubah string menjadi variabel tabel, ada banyak di luar sana. Yang ini adalah favorit pribadi saya:http://dataeducation.com/faster -more-scalable-sqlclr-string-splitting/

  4. Gunakan Parameter Nilai Tabel (2008):http://www.techrepublic.com/blog/datacenter/passing-table-valued-parameters-in-sql-server-2008/168

  5. Berikut sedikit trik menggunakan CHARINDEX (perhatikan bahwa pendekatan ini Non-Sargable):

String Anda seperti ini:'abc,def'

Menggunakan CHARINDEX , Anda memasukkan string pencarian dan nilai yang ingin Anda temukan dalam string pencarian dengan pembatas Anda. Jadi menggunakan contoh kecil saya, string akan menjadi ',abc,def,' Perhatikan koma tambahan di awal dan akhir. Kemudian lakukan hal yang sama pada data lapangan. Jika Anda memiliki koma di data Anda, Anda harus menukar delimeter dengan yang lain, seperti char(2), atau titik koma, atau apa pun.

Kemudian untuk melakukan pencarian:

WHERE CHARINDEX ( ',' + expressionToFind + ',' , ',' + expressionToSearch ',') > 0

Padding pembatas membuat pencarian tidak menemukan "abcabc" tetapi akan menemukan "abc", sama persis.

Jika Anda menggunakan 2005, saya akan mengambil fungsi split yang sangat cepat sehingga Anda dapat menghindari penggunaan SQL dinamis.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2008:masalah koneksi ODBC

  2. Kueri membandingkan tanggal dalam SQL

  3. Ganti nilai baris dengan string kosong jika duplikat

  4. Cara Memformat Tanggal &Waktu di SQL Server

  5. PADA ZONA WAKTU – fitur favorit baru di SQL Server 2016