Psql'de dizi içeren bir seçim nasıl yapılır


101

I sütuna sahip arr tiptedir array.

arrSütunun değer içerdiği satırları almam gerekiyors

Bu sorgu:

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

şu hatayı verir:

HATA: operatör mevcut değil: değişen karakter [] @> metin []

Neden çalışmıyor?

ps any()Operatör hakkında bilgim var ama neden çalışmıyor @>?

Yanıtlar:



68

Bunun da işe yarayabileceğini unutmayın:

SELECT * FROM table WHERE s=ANY(array)

4
Ve bu aynı zamanda s @> ARRAY['constant'::varchar], daha kısa olduğu gibi varchar'a döküm yapma ihtiyacımı da engelliyor .
Andrew Backer

Bu GIN indeksini kullanmayacak, bu yüzden onu kullanacağım. Yanılıyorsam
düzelt

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

Kapsama için iki diziyi karşılaştırın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.