Rumah >pangkalan data >tutorial mysql >IN vs. ANY dalam PostgreSQL: Bilakah Anda Harus Menggunakan Setiap Operator?

IN vs. ANY dalam PostgreSQL: Bilakah Anda Harus Menggunakan Setiap Operator?

Barbara Streisand
Barbara Streisandasal
2025-01-19 11:37:06281semak imbas

IN vs. ANY in PostgreSQL: When Should You Use Each Operator?

Perbandingan IN dan SEBARANG pengendali dalam PostgreSQL

Ikhtisar

PostgreSQL menyediakan dua struktur serupa, IN dan ANY, untuk memadankan nilai dengan set atau senarai. Walaupun fungsi logik mereka adalah sama, terdapat perbezaan yang ketara dalam sintaks dan penggunaan.

Sintaks dan padanan

DALAM:

  • Menerima senarai nilai yang dipisahkan koma.
  • bersamaan dengan = SEBARANG yang digunakan pada set nilai ini.

SEBARANG:

  • boleh menerima kedua-dua set dan array.
  • Selain pengendali kesaksamaan (=), rangkaian pengendali yang lebih luas diterima.

Tetapkan padanan

IN dan ANY adalah setara untuk memadankan nilai terhadap set. Contohnya:

<code class="language-sql">SELECT * FROM table WHERE id IN (1, 2, 3);
SELECT * FROM table WHERE id = ANY('{1, 2, 3}');</code>

Padanan tatasusunan

Walau bagaimanapun, terdapat varian sintaks tambahan ANY yang menyokong padanan array. Ini membolehkan anda membandingkan nilai dengan jenis data tatasusunan sebenar:

<code class="language-sql">SELECT * FROM table WHERE id = ANY(ARRAY[1, 2, 3]);</code>

Pengoptimuman Pertanyaan

Dalam sesetengah kes, pilihan antara IN dan ANY mempengaruhi pengoptimuman pertanyaan. Untuk koleksi besar, anda mungkin mendapat prestasi yang lebih baik dengan menghantar koleksi menggunakan struktur IN.

Ciri-Ciri Lain MANA-MANA

  • Kepelbagaian: Menyokong berbilang pengendali seperti LIKE atau >.
  • Padanan negatif: Anda boleh menggunakan operator NOT untuk mengecualikan nilai daripada tatasusunan (contohnya, id SEMUA (ARRAY[1, 2])).
  • NULL pengendalian: Secara lalai, nilai NULL ​​tidak sepadan dengan ungkapan ANY atau IN. Untuk memasukkan nilai NULL, gunakan IS NOT TRUE atau IS DISTINCT FROM.

Contoh

Untuk menunjukkan perbezaan ini, pertimbangkan contoh berikut:

<code class="language-sql">SELECT * FROM table WHERE id IN ('1', '2', NULL, 3);
SELECT * FROM table WHERE id = ANY('{1, 2, NULL, 3}');</code>

Ungkapan IN akan mengecualikan baris dengan nilai NULL, manakala SEBARANG ungkapan akan memasukkannya. Selain itu, SEBARANG ungkapan boleh menggunakan operator khusus tatasusunan, seperti id > ANY('{1, 2, 3}').

Atas ialah kandungan terperinci IN vs. ANY dalam PostgreSQL: Bilakah Anda Harus Menggunakan Setiap Operator?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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