По умолчанию, ArcGIS Server применяет стандартизованные запросы, что заставляет разработчиков использовать стандартизированные SQL-запросы при работе с картографическими сервисами, сервисами объектов и изображений, а также сервисами WFS через REST или SOAP. Это позволяет предотвратить SQL-вторжения. Дополнительные сведения см. в разделе О стандартизированных запросах.
Если вы разрабатываете приложения и используете специфический для базы данных синтаксис, вам необходимо обновить выражения where в коде вашей программы с целью использования стандартного синтаксиса SQL, поддерживаемого ArcGIS Server. В следующем списке приведены поддерживаемые SQL-функции и их синтаксис. При использовании следующих функций и синтаксиса в приложениях, ArcGIS Server конвертирует их в соответствии со спецификациями базы данных, использующийся в этом сервисе.
Тип функции | Функция | Описание | Пример: | Примечания |
---|---|---|---|---|
Date | CURRENT_DATE | Возвращает текущую дату в часовом поясе сеанса. | Datefield < CURRENT_DATE | Поддерживается только следующий синтаксис даты и временной метки: date 'гггг-мм-дд', например, Datefield = date '2012-05-29' timestamp 'гггг-мм-дд чч:мм:сс', например, Datefield = timestamp '2012-05-29 15:14:25' |
CURRENT_TIMESTAMP | Возвращает текущее локальное время. | Timestampfield < CURRENT_TIMESTAMP | ||
EXTRACT(extract_field FROM extract_source) | Возвращает одну из частей даты/времени, например год, месяц, день, час, минута и т.д. Аргументом extract_field может быть одно из следующих ключевых слов: YEAR (ГОД), MONTH (МЕСЯЦ), DAY (ДЕНЬ), HOUR (ЧАС), MINUTE (МИНУТА) или SECOND (СЕКУНДА). | Поиск по всем строкам, начиная с ноября: EXTRACT(MONTH FROM Datefield) = 11 | ||
Математические | ABS(numeric_exp) | Возвращает абсолютное (положительное) значение определенного числового выражения. | ||
CEILING(numeric_exp) | Возвращает наименьшее целое значение, большее или равное определенному числовому выражению. | |||
FLOOR(numeric_exp) | Возвращает наибольшее целое значение, меньшее или равное определенному числовому выражению. | |||
LOG(float_exp) | Возвращает натуральный логарифм определенного выражения с плавающей точкой. | |||
LOG10(float_exp) | Возвращает логарифм по основанию 10 определенного выражения с плавающей точкой. | |||
POWER(numeric_exp, integer_exp) | Возвращает значение определенного выражения в указанной степени. | POWER(Numericfield, 2) = 16 | ||
ROUND(numeric_exp, integer_exp) | Возвращает числовое значение, округленное до указанной длины или точности. | |||
TRUNCATE(numeric_exp, integer_exp) | Возвращает числовое значение, без округления до указанной длины или точности. | |||
String | CHAR_LENGTH(string_exp) | Возвращает длину входной строки в символах. | ||
CONCAT(string_exp1, string_exp2) | Возвращает строку, являющуюся результатом конкатенации двух или более строковых значений. | |||
LOWER(string_exp) | Возвращает символьное выражение, полученное после конвертации символов верхнего регистра в символы нижнего регистра. | |||
SUBSTRING(string_exp FROM start FOR length) | Возвращает часть символьного или текстового выражения. | Поиск всех строк. в которых первые два символа после значений в Stringfield равны Ch: SUBSTRING(Stringfield FROM 1 FOR 2)='Ch' | ||
UPPER(string_exp) | Возвращает символьное выражение, полученное после конвертации символов нижнего регистра в символы верхнего регистра. |