Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyalurkan Nilai Terhad Koma dengan Cekap kepada Pelayan SQL IN Fungsi?

Bagaimana untuk Menyalurkan Nilai Terhad Koma dengan Cekap kepada Pelayan SQL IN Fungsi?

Mary-Kate Olsen
Lepaskan: 2025-01-22 04:25:09
asal
561 orang telah melayarinya

How to Efficiently Pass Comma-Delimited Values to a SQL Server IN Function?

Hapuskan nilai yang dibataskan ke fungsi SQL Server IN

Mengirim nilai rentetan dipisahkan koma ke fungsi IN dalam SQL Server boleh menjadi satu cabaran. Penggunaan langsung fungsi IN yang mengandungi rentetan terhad akan mengakibatkan ralat penukaran.

Pilihan 1: SQL Dinamik

Salah satu cara ialah menggunakan SQL dinamik, yang membolehkan anda membina klausa IN secara dinamik. Walau bagaimanapun, kaedah ini tidak disyorkan kerana kebimbangan keselamatan dan prestasi.

Pilihan 2: Operasi rentetan

Penyelesaian yang lebih cekap dan selamat ialah memanipulasi rentetan yang dibataskan ke dalam format yang boleh diterima oleh fungsi IN. Satu pilihan ialah menggunakan fungsi CHARINDEX() untuk menyemak sama ada setiap nilai dalam rentetan yang dibataskan sepadan dengan nilai lajur dalam jadual:

<code class="language-sql">DECLARE @Ids varchar(50) = ',1,2,3,5,4,6,7,98,234,'

SELECT * 
FROM sometable
WHERE CHARINDEX(','+CAST(tableid AS VARCHAR(8000))+',', @Ids) > 0</code>
Salin selepas log masuk

Kaedah ini tidak memerlukan SQL dinamik, sekali gus mengimbangi kelebihan keselamatan dan prestasi.

Penyelesaian mudah

Bagi mereka yang mencari penyelesaian yang kurang elegan tetapi lebih mudah, terdapat helah mudah:

<code class="language-sql">DECLARE @Ids varchar(50) = ',1,2,3,5,4,6,7,98,234,'

SELECT * 
FROM sometable
WHERE ',' + CONVERT(VARCHAR, tableid) + ',' LIKE '%,' + @Ids + '%';</code>
Salin selepas log masuk

Walaupun kaedah ini tidak secekap kaedah CHARINDEX(), ia memberikan alternatif yang cepat dan mudah.

Atas ialah kandungan terperinci Bagaimana untuk Menyalurkan Nilai Terhad Koma dengan Cekap kepada Pelayan SQL IN Fungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan