Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Melewati Rentetan Dibatasi Koma ke Fungsi IN SQL Server Tanpa SQL Dinamik?

Bagaimana untuk Melewati Rentetan Dibatasi Koma ke Fungsi IN SQL Server Tanpa SQL Dinamik?

Linda Hamilton
Lepaskan: 2025-01-22 04:21:09
asal
175 orang telah melayarinya

How to Pass a Comma-Delimited String to SQL Server's IN Function Without Dynamic SQL?

Mengelakkan SQL Dinamik: Mengendalikan Nilai Dipisahkan Koma dalam Klausa IN SQL Server

Mengirimkan rentetan dipisahkan koma secara langsung ke fungsi IN SQL Server selalunya membawa kepada ralat penukaran taip. Mari kita periksa senario biasa:

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

SELECT * 
FROM sometable 
WHERE tableid IN (@Ids);</code>
Salin selepas log masuk

Ini akan mengakibatkan ralat penukaran kerana klausa IN menjangkakan nilai integer individu, bukan rentetan. Untuk memintas ini tanpa menggunakan SQL dinamik, kaedah yang lebih mantap ialah menggunakan fungsi CHARINDEX:

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

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

Pertanyaan yang dipertingkatkan ini menambahkan koma dengan bijak pada kedua-dua hujung rentetan @Ids. CHARINDEX kemudian mencari versi tableid yang dipisahkan koma dalam rentetan @Ids yang diubah suai. Ini memastikan padanan tepat dan menghalang padanan separa yang boleh membawa kepada keputusan yang salah. Hanya baris yang tableid ditemui dalam senarai yang dipisahkan koma akan dikembalikan.

Atas ialah kandungan terperinci Bagaimana untuk Melewati Rentetan Dibatasi Koma ke Fungsi IN SQL Server Tanpa SQL Dinamik?. 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