วิธีการเลือกด้วย array มี value clause ใน psql


99

ฉันมีคอลัมน์ที่เป็นประเภทarr array

ฉันต้องการรับแถวโดยที่arrคอลัมน์มีค่าs

คำถามนี้:

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

ให้ข้อผิดพลาด:

ข้อผิดพลาด: ไม่มีตัวดำเนินการ: อักขระที่แตกต่างกัน [] @> text []

ทำไมมันไม่ทำงาน?

ps ฉันรู้เกี่ยวกับany()ตัวดำเนินการ แต่ทำไมไม่@>ทำงาน

คำตอบ:



68

โปรดทราบว่าสิ่งนี้อาจใช้งานได้:

SELECT * FROM table WHERE s=ANY(array)

4
และสิ่งนี้ยังป้องกันไม่ให้ฉันต้องแคสต์ไปยัง varchar ในขณะที่s @> ARRAY['constant'::varchar]สั้นกว่า
Andrew Backer

สิ่งนี้จะไม่ใช้ดัชนี GIN ดังนั้นฉันจะใช้มัน แก้ไขฉันถ้าฉันผิด
GorillaApe

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

เปรียบเทียบอาร์เรย์สองอาร์เรย์สำหรับการกักกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.