Cách duy nhất mà tôi biết là loại 'bùn mỗi lần sử dụng'.
Ví dụ: tôi có dữ liệu bao gồm một mảng các số thuộc tính (tên thuộc tính propnum_array
, dtype varchar[]
) và đôi khi tôi muốn xác định bất kỳ dữ liệu nào trong đó mảng trống.
Việc kiểm tra propnum_array = {}
hoặc propnum_array is null
hoặc propnum[0]=''
(hoặc bất kỳ biến thể nào khác về loại chủ đề đó) khiến cho QGIS bịt miệng, tuy nhiên tôi có thể thực hiện regexp_match( propnum_array,'\\d')
hoặc propnum_array ilike '{""}'
hoặc propnum_array = '{""}'
phân vùng dữ liệu thành những thứ không trống propnum_array
và những thứ không có.
Điều này có nghĩa là nếu các mảng có cấu trúc (ví dụ: các giá trị cụ thể tại các phần tử cụ thể trong mảng), bạn có thể quét các giá trị đó: nếu bạn muốn tất cả các giá trị trong đó phần tử thứ hai trong mảng 3 phần tử là 'Y', thì bạn sẽ muốn một cái gì đó giống như regexp_match( propnum_array,'[,]*\'Y\'\[,]*')
(khá chắc chắn rằng bạn phải thoát dấu phẩy và dấu ngoặc đơn bên trong chuỗi khớp, nhưng đó là trường hợp sử dụng để người khác lo lắng).
Thực tế là có hiệu propnum_array ilike '{""}'
quả, dường như chỉ ra rằng QGIS đối xử với các mảng như thể chúng là văn bản. Ngoài ra, nó có thể khiến chúng chuyển thành văn bản nhanh chóng, nếu được yêu cầu - nhưng sau đó sẽ không có ý nghĩa đối với các kiểu mảng không được ghi nhận (AFAIK). Tôi đã không thể tìm thấy bất kỳ tài liệu nào về xử lý mảng và có những câu hỏi trong danh sách gửi thư osgeo-qgis gần đây như tháng 1 năm 2015.
Tôi đoán gợi ý chính là không có chức năng mảng trong trình soạn thảo biểu thức, mặc dù tôi hiểu rằng plugin 'Data Driven Input Mask' đã xử lý mảng kể từ v1.0.0 (tháng 2 năm 2015).