Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menggunakan Penyata KES dalam Klausa SQL WHERE untuk Penapisan Bersyarat?

Bagaimanakah Saya Boleh Menggunakan Penyata KES dalam Klausa SQL WHERE untuk Penapisan Bersyarat?

Barbara Streisand
Lepaskan: 2025-01-10 06:20:41
asal
192 orang telah melayarinya

How Can I Use a CASE Statement in a SQL WHERE Clause for Conditional Filtering?

Pernyataan Suis/Kes bagi klausa WHERE dalam SQL

Pernyataan pertanyaan:

Pertanyaan berikut cuba menggunakan pernyataan CASE dalam klausa WHERE untuk menapis berdasarkan nilai @locationType dan @locationID:

<code class="language-sql">declare @locationType varchar(50);
declare @locationID int;

SELECT column1, column2
FROM viewWhatever
WHERE
CASE @locationType
    WHEN 'location' THEN account_location = @locationID
    WHEN 'area' THEN xxx_location_area = @locationID
    WHEN 'division' THEN xxx_location_division = @locationID
END;</code>
Salin selepas log masuk

Ralat:

Pertanyaan ini mengakibatkan ralat sintaks kerana ungkapan CASE menjangkakan satu nilai pulangan. Pelbagai klausa WHEN salah memasukkan perbandingan kesamaan (= @locationID) yang bukan ungkapan CASE.

Penyelesaian:

Sintaks yang betul untuk menggunakan pernyataan CASE dalam klausa WHERE adalah untuk menetapkan ungkapan kepada lajur sasaran:

<code class="language-sql">declare @locationType varchar(50);
declare @locationID int;

SELECT column1, column2
FROM viewWhatever
WHERE
@locationID = 
  CASE @locationType
      WHEN 'location' THEN account_location
      WHEN 'area' THEN xxx_location_area
      WHEN 'division' THEN xxx_location_division
  END;</code>
Salin selepas log masuk

Dalam pertanyaan yang diubah suai ini, ungkapan CASE mengembalikan pengecam lokasi yang sepadan berdasarkan nilai @locationType. Klausa WHERE kemudian membandingkan nilai ini dengan @locationID untuk menapis hasil seperti yang diharapkan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Penyata KES dalam Klausa SQL WHERE untuk Penapisan Bersyarat?. 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