Rumah > pangkalan data > tutorial mysql > SQL DAN/ATAU Keutamaan Operator: Adakah Pernyataan SQL Ini Setara?

SQL DAN/ATAU Keutamaan Operator: Adakah Pernyataan SQL Ini Setara?

Barbara Streisand
Lepaskan: 2025-01-22 21:46:10
asal
514 orang telah melayarinya

SQL AND/OR Operator Precedence: Are These SQL Statements Equivalent?

Keutamaan Operator Logik SQL: Memahami Hierarki DAN dan ATAU

Dalam SQL, operator logik "AND" dan "OR" ialah blok binaan untuk membina ungkapan bersyarat yang menapis data berdasarkan syarat yang ditentukan. Walau bagaimanapun, keutamaannya, atau susunan penilaiannya, adalah penting dalam menentukan keputusan ungkapan ini.

Soalan:

Pertimbangkan dua pernyataan SQL berikut:

<code class="language-sql">SELECT [...]
FROM [...]
WHERE some_col in (1,2,3,4,5) AND some_other_expr</code>
Salin selepas log masuk
<code class="language-sql">SELECT [...]
FROM [...]
WHERE some_col in (1,2,3) or some_col in (4,5) AND some_other_expr</code>
Salin selepas log masuk

Adakah kenyataan ini setara? Adakah terdapat alat seperti jadual kebenaran yang boleh membantu mengesahkan kesetaraan mereka?

Jawapan:

Tidak, kedua-dua pernyataan ini tidak bersamaan . "AND" mempunyai keutamaan yang lebih tinggi daripada "OR", yang bermaksud bahawa ungkapan some_col in (1,2,3,4,5) AND some_other_expr dinilai dahulu, dan kemudian hasil penilaian itu digunakan pada operator OR.

Untuk menggambarkan ini, pertimbangkan contoh berikut:

<code class="language-sql">Declare @x tinyInt = 1
Declare @y tinyInt = 0
Declare @z tinyInt = 0

Select Case When @x=1 OR @y=1 And @z=1 Then 'T' Else 'F' End -- 输出 T
Select Case When (@x=1 OR @y=1) And @z=1 Then 'T' Else 'F' End -- 输出 F</code>
Salin selepas log masuk

Pernyataan pertama menilai @x=1 OR @y=1 And @z=1 dan hasilnya ialah "T" kerana ungkapan @y=1 And @z=1 mengembalikan "Salah". Operator "ATAU" kemudiannya menggabungkan hasil ini dengan "@x=1" (iaitu "Benar"), akhirnya mengeluarkan "T".

Walau bagaimanapun, pernyataan kedua menilai (@x=1 OR @y=1) And @z=1 secara berbeza. Operator "OR" mula-mula menggabungkan "@x=1" dan "@y=1", kedua-duanya adalah "Benar", dan hasilnya "Benar". Hasil "Benar" ini kemudiannya dinilai dengan "@z=1" (iaitu "Salah"), menghasilkan output akhir "F".

Oleh itu, susunan penilaian adalah penting dan kurungan boleh digunakan untuk mengatasi peraturan keutamaan. Untuk menjadikan kedua-dua pernyataan ini setara, anda boleh menambah kurungan seperti ini:

<code class="language-sql">SELECT [...]
FROM [...]
WHERE (some_col in (1,2,3) or some_col in (4,5)) AND some_other_expr</code>
Salin selepas log masuk

Bagi mereka yang mencari bahan rujukan lanjut mengenai keutamaan operator logik dalam SQL, sumber berikut disyorkan:

  • Keutamaan pengendali Microsoft Transact-SQL
  • Keutamaan operator Oracle MySQL 9
  • Keutamaan keadaan Oracle 10g
  • Keutamaan pengendali PostgreSQL
  • SQL difahami oleh SQLite

Atas ialah kandungan terperinci SQL DAN/ATAU Keutamaan Operator: Adakah Pernyataan SQL Ini Setara?. 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