Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menggunakan Pembolehubah Diisytiharkan dengan Klausa IN dengan Berkesan dalam SQL Server untuk Mengelakkan Ralat Penukaran?

Bagaimanakah Saya Boleh Menggunakan Pembolehubah Diisytiharkan dengan Klausa IN dengan Berkesan dalam SQL Server untuk Mengelakkan Ralat Penukaran?

Mary-Kate Olsen
Lepaskan: 2025-01-09 20:26:42
asal
788 orang telah melayarinya

How Can I Effectively Use Declared Variables with IN Clauses in SQL Server to Avoid Conversion Errors?

Mengendalikan klausa IN menggunakan klausa IN mengisytiharkan pembolehubah dalam SQL Server

Memasukkan berbilang nilai ke dalam klausa IN menggunakan pembolehubah yang diisytiharkan mungkin menghadapi ralat, terutamanya jika pembolehubah itu mengandungi aksara bukan angka. Mari kita terokai masalah ini dan bincangkan penyelesaiannya.

Ralat pemahaman

Dalam pernyataan SQL yang diberikan:

<code class="language-sql">DECLARE @ExcludedList VARCHAR(MAX)

SET @ExcludedList = 3 + ', ' + 4 + ' ,' + '22'

SELECT * FROM A WHERE Id NOT IN (@ExcludedList)</code>
Salin selepas log masuk

Mesej ralat menunjukkan bahawa penukaran daripada nilai VARCHAR yang mengandungi koma dan ruang kepada integer (INT) gagal. Ini kerana klausa IN menjangkakan julat nilai berangka, dan koma dan ruang tidak diiktiraf sebagai integer yang sah.

Gunakan pembolehubah jadual untuk memproses senarai dinamik

Satu cara untuk mengatasi had ini ialah menggunakan pembolehubah jadual untuk menyimpan senarai nilai untuk klausa IN. Ini membolehkan kami memasukkan berbilang nilai ke dalam pembolehubah jadual dan menganggapnya sebagai satu entiti.

Buat dan isikan pembolehubah jadual

Isytihar pembolehubah jadual untuk mewakili senarai nilai yang dikecualikan:

<code class="language-sql">DECLARE @ExcludedList TABLE (Id INT)</code>
Salin selepas log masuk

Masukkan nilai ke dalam pembolehubah jadual menggunakan gelung atau mana-mana kaedah lain yang sesuai:

<code class="language-sql">INSERT INTO @ExcludedList VALUES (3)
INSERT INTO @ExcludedList VALUES (4)
INSERT INTO @ExcludedList VALUES (22)</code>
Salin selepas log masuk

Gunakan pembolehubah jadual dalam klausa IN

Klausa IN kini boleh merujuk pembolehubah jadual, yang secara automatik akan mengendalikan penukaran nilainya kepada integer:

<code class="language-sql">SELECT * FROM A WHERE Id NOT IN (SELECT Id FROM @ExcludedList)</code>
Salin selepas log masuk

Pernyataan yang diubah suai ini akan mengembalikan baris daripada jadual A yang tiada dalam senarai kecualikan, sekali gus mengelakkan ralat penukaran.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Pembolehubah Diisytiharkan dengan Klausa IN dengan Berkesan dalam SQL Server untuk Mengelakkan Ralat Penukaran?. 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