วิธีเดียวที่ฉันรู้คือ 'kludge ต่อการใช้งาน'
ตัวอย่างเช่นฉันมีข้อมูลที่มีอาร์เรย์ของหมายเลขคุณสมบัติ (ชื่อแอตทริบิวต์propnum_array
, dtype varchar[]
) และบางครั้งฉันต้องการระบุข้อมูลใด ๆ ที่อาเรย์นั้นว่างเปล่า
การทดสอบpropnum_array = {}
หรือ propnum_array is null
หรือpropnum[0]=''
(หรือรูปแบบอื่น ๆ ของชุดรูปแบบนั้น) ทำให้ QGIS ปิดปาก แต่ฉันสามารถทำ regexp_match( propnum_array,'\\d')
หรือpropnum_array ilike '{""}'
หรือ propnum_array = '{""}'
และแบ่งพาร์ติชันข้อมูลเป็นสิ่งที่ไม่ว่างเปล่าpropnum_array
และสิ่งที่ไม่ได้
สิ่งนี้หมายความว่าถ้าอาร์เรย์มีโครงสร้าง (เช่นค่าเฉพาะที่องค์ประกอบเฉพาะในอาร์เรย์) คุณสามารถสแกนหาค่าเหล่านั้น: หากคุณต้องการค่าทั้งหมดที่องค์ประกอบที่สองในอาร์เรย์ 3 องค์ประกอบคือ 'Y' คุณจะต้องการอะไรregexp_match( propnum_array,'[,]*\'Y\'\[,]*')
ซักอย่าง(ค่อนข้างแน่ใจว่าคุณต้องหลีกเลี่ยงเครื่องหมายจุลภาคและเครื่องหมายคำพูดเดี่ยวภายในสตริงการจับคู่ แต่นั่นเป็นกรณีการใช้งานสำหรับคนอื่นที่ต้องกังวล)
ความจริงที่ใช้propnum_array ilike '{""}'
งานได้ดูเหมือนว่าจะบ่งบอกว่า QGIS ปฏิบัติต่ออาร์เรย์ราวกับว่าพวกเขาเป็นข้อความ หรืออาจใช้วิธีโยนมันลงบนข้อความได้ทันทีหากจำเป็น - แต่ก็ไม่เหมาะสมที่จะไม่มีประเภทของอาร์เรย์ (AFAIK) ฉันไม่สามารถค้นหาเอกสารใด ๆ เกี่ยวกับการจัดการอาร์เรย์และมีคำถามเกี่ยวกับรายชื่อผู้รับจดหมาย osgeo-qgis เมื่อเร็ว ๆ นี้ในเดือนมกราคม 2015
ฉันเดาว่าคำใบ้หลักคือไม่มีฟังก์ชันอาเรย์ในตัวแก้ไขนิพจน์แม้ว่าฉันเข้าใจว่าปลั๊กอิน'Data Driven Input Mask'มีการจัดการอาเรย์ตั้งแต่ v1.0.0 (ก.พ. 2015)