Описание идентификаторов, констант, функций и операторов

Идентификаторы

Это поля базы данных. При этом каждое поле имеет свой псевдоним, который можно использовать при написании запросов. Псевдоним может использоваться в сочетании с операторами например: для копирования данных из одного поля, в другое, для сложения/вычитания/деления данных цифровых полей, для конкатенации (объединения строк) и др. Например, F4 + F5, то есть выбрать те записи, у которых значение поля равно сумме полей с псевдонимами F4 и F5. По мимо цифровых псевдонимов в условиях могут быть использованы названия полей, при чем как исходных табличных так и псевдонимов. Их следует писать в скобках и кавычках. Например, F("H_pod") или field("Располагаемый напор, м").

Так же идентификаторы могут использоваться для написания более сложных условий запроса, например: (F7>0 AND F8 > 0) OR F9>0. В данном случае условия необходимо заносить в верхнюю строку *.

Константы

Используют для сравнения со значениями в полях таблиц, могут быть строковыми, числовыми. Тип константы (значение, с которым необходимо сравнивать значения в поле таблицы) должен совпадать с типом данных в этом поле. То есть, если поле является числовым, то и сравнивать нужно с числом. В противном случае возникает сообщение о несоответствии типов.

При поиске информации в полях типа строковое возможно вводить не полное значение, а использовать маску поиска, с применением * (например, маске *Невск* соответствует «Невский проспект» и «Невская улица»). Для точного поиска через условие «равно» условие следует задавать в кавычках, например следующим образом: ="ТК-1".

При вводе констант строкового типа по умолчанию учитывается регистр, если требуется чтобы он не учитывался, то следует снять соответствующую опцию. Для этого надо открыть окно семантической информации, выбрать вкладку Запрос, сделать щелчок правой кнопкой мыши и в открывшемся меню снять опцию Учитывать регистр.

Для числовых полей условие отбора может содержать просто число (при проверке на равенство), а также операторы сравнения (> – больше, < – меньше, >= – больше либо равно, <= – меньше либо равно, <> – не равно).

Так же для числовых полей могут быть использованы более сложные условия с применением различных идентификаторов и операторов описанных далее, например (F7 > 0 OR F8 > 0) AND F9 < 0. Такого типа запросы пишутся в самую верхнюю строку, обозначенную *.

Функции

Встроенные функции системы, такие как суммирование, нахождение минимального, максимального значения и т. д. Следует учитывать, что такие функции, как нахождение среднего, минимального или максимального значения можно применять только к числовым полям. В противном случае появляется сообщение о несоответствии типов.

[Примечание]Примечание

Текущая версия позволяет по мимо «встроенных» функций, которые возможно открыть нажатием кнопки использовать некоторые функции, которые поддерживает целевая СУБД. Их необходимо вносить с клавиатуры.

Операторы

Таблица 7.


Ряд операторов и функций, которые возможно использовать при написании запросов, описаны в таблице ниже:

Таблица 8.

Оператор

Пояснение

+При использовании с цифровым типом данных - оператор сложения. При использовании с строковым типом данных - оператор конкатенации (объединения).

Например, в результате запроса для строковых данных вида ИЗМЕНИТЬ F2+" д. "+F3 система объединит данные строк F2 и F3, и между ними подставит букву д.:

Окно семантической информации. Вкладка Запрос

Рисунок 664. Окно семантической информации. Вкладка Запрос


-Оператор вычитания. Используется с цифровым типом данных.
*Оператор умножения. Используется с цифровым типом данных.
/Оператор деления. Используется с цифровым типом данных.
=Оператор сравнения. Используется как для цифровых полей так и для строковых, во втором случае константа для сравнения пишется в кавычках.
<, >Операторы сравнения, > – больше, < – меньше, применяются к цифровым полям.
<=,>=Операторы сравнения, >= – больше либо равно, <= – меньше либо равно, применяются к цифровым полям.
<> Оператор сравнения, <> – не равно.
|| Оператор конкатенации (объединения строк). Работает аналогично + со строковым типом данных.

НЕ (NOT), И (AND), ИЛИ (OR)

Логическое НЕ , И, ИЛИ.

ИЗМЕНИТЬ (CHANGETO)

Оператор обновления данных. Значение поля в выборке будет изменено на значение, указанное в параметре этого оператора. Для строковых полей данные, на которые надо заменить значение поле вносятся в кавычках, например ИЗМЕНИТЬ "Некрасова".

Для цифрового поля кавычки не нужны. Например, в результате запроса вида ИЗМЕНИТЬ 0.2, в указанных полях будет внесено 0.2. Если заранее не выделена группа объектов и не нажата кнопка фильтр по группе (), то данный оператор по умолчанию применяется ко всей базе данных! Если требуется внести данные определенным объектам, то их предварительно необходимо выделить.

Окно семантической информации. Вкладка Запрос

Рисунок 665. Окно семантической информации. Вкладка Запрос


[Предупреждение]Предупреждение

Операция изменения возврата (отката) НЕ ИМЕЕТ!

[Примечание]Примечание

Возможно запретить выполнение запросов на изменение (CHANGETO, ИЗМЕНИТЬ) сразу ко всей базе данных. В этом случае пользователь сможет выполнять запросы только по группе выделенных объектов. Запрет устанавливается с помощью параметра restrict-changeto в конфигурационном файле источников данных DataSrc.cfg (расположен в папке с ZuluGIS).

Возможные значения параметра restrict-changeto:

  • yes или group - ограничивать по группе.

  • no - не ограничивать (работать как прежде).

По-умолчанию имеет значение no.

ПУСТО (BLANK)

Логический оператор. Принимает значение истина если поле пусто. Может использоваться для поиска полей в которых отсутствуют данные. Используется самостоятельно или в комбинации с другими операторами, например с ИЗМЕНИТЬ.

Например, в результате запроса вида ПУСТО , ИЗМЕНИТЬ "ГУП ТЭК", система найдет пустые поля и только для них внесет значение ГУП ТЭК.

Окно семантической информации. Вкладка Запрос

Рисунок 666. Окно семантической информации. Вкладка Запрос


,

Запятая, оператор разделения условий.

ЧИСЛО (COUNT)

Оператор подсчета количества записей, удовлетворяющих остальным условиям. Результат запроса появится в закладке Ответ. С помощью него возможно подсчитать количество домов на определенной улице, количество трубопроводов определенного диаметра, количество отключенных потребителей и т.д.

Например, для подсчета количества участков, у которых внутренний диаметр подающего трубопровода 0,2 м надо написать следующий запрос:

Окно семантической информации. Вкладка Запрос

Рисунок 667. Окно семантической информации. Вкладка Запрос


СРЕДНЕЕ (AVG)

Оператор подсчета среднего значения поля. Результат запроса появится в закладке Ответ.

Например, для подсчета среднего количества жителей в 5 этажных домах выделенного квартала (нажата кнопка фильтр по группе - ), надо написать следующий запрос:

Окно семантической информации. Вкладка Запрос

Рисунок 668. Окно семантической информации. Вкладка Запрос


СУММА (SUM)

Оператор подсчета суммы значений. Результат запроса появится в закладке Ответ.

Например, для подсчета суммарной длины подающего трубопровода диаметром 0.2 м для всей сети, надо написать следующий запрос:

Окно семантической информации. Вкладка Запрос

Рисунок 669. Окно семантической информации. Вкладка Запрос


МАКС (MAX)

Оператор подсчета максимального значения поля. Результат запроса появится в закладке Ответ.

Например, для нахождения максимального значения геодезической отметки у потребителей, надо написать следующий запрос:

Окно семантической информации. Вкладка Запрос

Рисунок 670. Окно семантической информации. Вкладка Запрос


МИН (MIN)

Оператор подсчета минимального значения поля. Результат запроса появится в закладке Ответ.

ROUNDФункция округления, производит округление данных, возвращает числовое значение, округленное до указанной длины или точности.

Данной функции нет в списке, вносится в поле вручную. Формат ее аргументов зависит от используемой СУБД. Например в Microsoft SQL Server она принимает 2 или 3 аргумента (https://learn.microsoft.com/ru-ru/sql/t-sql/functions/round-transact-sql?view=sql-server-ver16) и округление до 2-х знаков после запятой выглядит так: ROUND(…, -2).

В SQLite она тоже есть, но принимает 1 или 2 аргумента (https://www.w3resource.com/sqlite/core-functions-round.php) и округление до 2-х знаков после запятой выглядит так: ROUND(…, 2).

Например, если используется SQLite, то для округления внесенной площади до 1 знака после запятой, надо написать следующий запрос:

Окно семантической информации. Вкладка Запрос

Рисунок 671. Окно семантической информации. Вкладка Запрос



Так же помимо приведенных выше операторов и функций существуют дополнительные параметры:

Таблица 9.

Оператор

Пояснение

ТИП (TYPE)

Параметр возвращает объекты, относящиеся к заданному типу (ID объекта). Результат запроса появится в закладке Ответ. Записывается в виде ТИП =X, где X номер типа в структуре слоя.

РЕЖИМ (MODE)

Параметр возвращает объекты, относящиеся к заданному режиму объекта. Результат запроса появится в закладке Ответ. Записывается в виде РЕЖИМ =Y, где Y порядковый номер режима в структуре слоя.

Например, для вывода списка отключенных потребителей в выделенном районе (нажата кнопка фильтр по группе - ), надо написать следующий запрос:

Окно семантической информации. Вкладка Запрос

Рисунок 672. Окно семантической информации. Вкладка Запрос


ДЛИНА (LENGTH)

Параметр возвращает длину объекта, взятую с карты. Используется при локальной системе координат. Результат запроса появится в закладке Ответ. Для внесения длинны в определенное поле оператор используется совместно с оператором ИЗМЕНИТЬ.

ПЕРИМЕТР (PERIMETER)

Параметр возвращает периметр объекта, взятый с карты. Используется при локальной системе координат. Результат запроса появится в закладке Ответ. Для внесения периметра в определенное поле оператор используется совместно с оператором ИЗМЕНИТЬ.

ПЛОЩАДЬ (AREA)

Параметр возвращает площадь объекта, взятую с карты. Используется при локальной системе координат. Результат запроса появится в закладке Ответ. Для внесения площади в определенное поле оператор используется совместно с оператором ИЗМЕНИТЬ.

ДЛИНА_СФ (LENGTH_SPH)

Параметр возвращает длину объекта, взятую с карты. Используется при географической системе координат. Результат запроса появится в закладке Ответ.

ПЕРИМЕТР_СФ (PERIMETER_SPH)

Параметр возвращает периметр объекта, взятый с карты. Используется при географической системе координат. Результат запроса появится в закладке Ответ.

ПЛОЩАДЬ_СФ (AREA_SPH)

Параметр возвращает длину объекта, взятую с карты. Используется при географической системе координат. Результат запроса появится в закладке Ответ.

Например, для внесения площади выделенных домов (нажата кнопка фильтр по группе - ) в соответствующее поле, надо написать следующий запрос:

Окно семантической информации. Вкладка Запрос

Рисунок 673. Окно семантической информации. Вкладка Запрос


Округлить внесенные данные возможно с использованием функции ROUND.

ТЕКСТ (TEXT)Параметр возвращает текстовое значение объекта. Данный оператор может использоваться в том случае, если например имеется слой с высотными отметками в виде текстовых объектов и требуется их значения перенести в семантическую базу данных. Для этого в базе должно быть создано поле для отметок и в нем выполнен запрос вида ИЗМЕНИТЬ ТЕКСТ.