2016-09-22 14 views
8

Bu sorunun cevabın bir yerlerde olduğu anlamında yinelenen bir soru olduğundan eminim, ancak Googling'i 10 dakika sonra bulmayı başaramadım, bu yüzden editörleri kapatmak istemem. Diğer insanlar için yararlı olabileceği temelinde.Postgres: dizi alanı değer içerip içermediğini kontrol edin.

Postgres 9.5 kullanıyorum. Ben pub_types yılında "Journal" ile tüm satırları bulmak istiyoruz

 Column   │   Type   │        Modifiers 
─────────────────────────┼───────────────────────────┼───────────────────────────────────────────────────────────────────────── 
id      │ integer     │ not null default nextval('mytable_id_seq'::regclass) 
pmid     │ character varying(200) │ 
pub_types    │ character varying(2000)[] │ not null 

: Bu benim tablodur.

Ben dokümanlar bulundu google'dan ve bu denedim budur ettik: Ne the postgres array docs taradık ama bir sorgu çalıştırmak için nasıl basit bir örnek göremiyorum

select * from mytable where ("Journal") IN pub_types; 
select * from mytable where "Journal" IN pub_types; 
select * from mytable where pub_types=ANY("Journal"); 
select * from mytable where pub_types IN ("Journal"); 
select * from mytable where where pub_types contains "Journal"; 

ve StackOverflow Bütün sorular daha karmaşık örneklere dayanıyor gibi görünüyor.

cevap

13

Bu çalışması gerekir:

select * from mytable where 'Journal'=ANY(pub_types); 

yani sözdizimi <value> = ANY (<array>) olup. Ayrıca, postresql'deki dize değişmezlerinin tek tırnak işareti ile yazıldığını unutmayın.

+0

Çok teşekkür ederim! – Richard

İlgili konular