Единственный способ, о котором я знаю, это своего рода «клудж для каждого использования».
Например, у меня есть данные, которые включают в себя массив номеров свойств (имя атрибута 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.0.0 (февраль 2015 г.).