ArcGIS Online 中的标准化 SQL 函数
ArcGIS Online 中含有一个安全选项,用于强制开发人员在使用 ArcGIS Online 上托管的要素服务时使用标准化 SQL 查询。此选项使开发人员和应用程序查询托管的要素服务更为简便,并有助于防止 SQL 注入攻击。默认情况下不强制使用标准化查询,但组织管理员可以启用标准化查询。
标准化查询限制
标准化查询会应用于整个组织;不会对某些服务启用和对其他服务禁用标准化查询。
不同工作空间之间的连接不支持标准化查询。
不支持子查询作为 where 子句,如 POP_2010 = (SELECT min(POP_2010) FROM counties。
也不支持数据库服务(如 Windows Azure SQL Data)中的查询。
ArcGIS Online 中支持哪些 SQL 函数?
如果您是一名应用程序开发人员,并且正在使用数据库特有的 where 子句语法,需要更新应用程序代码中的 where 子句以使用 ArcGIS Online 所支持的常规 SQL 语法。下面的列表显示了支持的 SQL 函数以及每个 SQL 函数的语法。在您的应用程序中使用下列函数和语法时,ArcGIS Online 会对其进行转换,使其符合服务使用的数据库规范。
函数类型 | 功能 | 说明 | 示例 | 注意事项 |
|---|---|---|---|---|
Date | CURRENT_DATE | 返回会话时区的当前日期。 | Datefield < CURRENT_DATE | 仅支持下列日期和时间戳语法: 日期 'yyyy-mm-dd',例如 Datefield = date '2012-05-29' timestamp 'yyyy-mm-dd hh:mm:ss',例如,Datefield = timestamp '2012-05-29 15:14:25' |
CURRENT_TIMESTAMP | 返回当前本地时间。 | Timestampfield < CURRENT_TIMESTAMP | ||
EXTRACTEXTRACT(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) | 返回数值,而不将值四舍五入到指定长度或指定精度。 | |||
字符串 | CHAR_LENGTH(string_exp) | 返回输入字符串的字符长度。 | ||
CONCAT(string_exp1, string_exp2) | 返回连接两个或多个字符串值后得到的字符串。 | |||
LOWER(string_exp) | 将大写字符数据转换为小写后返回字符表达式。 | |||
SUBSTRING(string_exp FROM start FOR length) | 返回字符或文本表达式的一部分。 | 搜索字符串字段中值的前两个字符为 Ch 的所有行: SUBSTRING(Stringfield FROM 1 FOR 2)='Ch' | ||
UPPER(string_exp) | 将小写字符数据转换为大写后返回字符表达式。 |