Answers:
我知道的唯一方法是一种“按使用情况的混战”。
例如,我的数据包含一个属性编号数组(属性名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年1月。
我想主要的提示是,表达式编辑器中没有数组函数,尽管我了解到“数据驱动输入掩码”插件自v1.0.0(2015年2月)以来就具有数组处理功能。