Cách tạo một select với mảng chứa mệnh đề giá trị trong psql


96

Tôi có cột arr thuộc loại array.

Tôi cần lấy các hàng, trong đó arrcột chứa giá trịs

Truy vấn này:

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

đưa ra lỗi:

LỖI: toán tử không tồn tại: ký tự thay đổi [] @> văn bản []

Tại sao nó không hoạt động?

ps Tôi biết về any()nhà điều hành, nhưng tại sao không @>hoạt động?

Câu trả lời:



65

Lưu ý rằng điều này cũng có thể hoạt động:

SELECT * FROM table WHERE s=ANY(array)

4
Và điều này cũng ngăn tôi không cần truyền sang varchar, như trong s @> ARRAY['constant'::varchar], ngắn hơn.
Andrew Backer

Điều này sẽ không sử dụng chỉ mục GIN vì vậy tôi sẽ sử dụng nó. Đúng tôi nếu tôi sai
GorillaApe

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

So sánh hai mảng để chứa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.