Cara membuat select dengan array berisi klausa nilai di psql


99

Saya memiliki kolom arr yang bertipe array.

Saya perlu mendapatkan baris, di mana arrkolom berisi nilais

Kueri ini:

SELECT * FROM table WHERE arr @> ARRAY['s']

memberikan kesalahan:

EROR: operator tidak ada: karakter bervariasi [] @> teks []

Mengapa tidak berhasil?

ps Saya tahu tentang any()operator, tetapi mengapa tidak @>berhasil?

Jawaban:



68

Perhatikan bahwa ini juga dapat berfungsi:

SELECT * FROM table WHERE s=ANY(array)

4
Dan ini juga mencegah saya dari kebutuhan untuk dilemparkan ke varchar, seperti dalam s @> ARRAY['constant'::varchar], lebih pendek.
Andrew Backer

Ini tidak akan menggunakan indeks GIN jadi saya akan menggunakannya. Koreksi saya jika saya salah
GorillaApe

17
SELECT * FROM table WHERE arr && '{s}'::text[];

Bandingkan dua larik untuk penahanan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.