ArcGIS REST API查询:筛选字符串字段含数值记录报错排查
问题分析与解决方案
原写法的核心问题
你之前的两种写法都会在actionid包含非数值字符串(比如'abc'、'12a3'这类)时触发转换错误——ArcGIS REST API的CAST函数对类型转换的校验非常严格,只要字符串无法被完整解析为目标数值类型,就会直接抛出查询失败的错误,而非返回NULL或跳过该记录。
另外,虽然COALESCE处理了空值,但没覆盖非数值格式的字符串场景,这才是导致查询报错的根本原因。
正确的WHERE子句写法
ArcGIS REST API支持ISNUMERIC()函数(符合SQL-92扩展规范),专门用来判断字符串是否可转换为数值类型,能完美避开转换失败的问题:
场景1:仅筛选actionid本身为数值格式的记录(空值排除)
WHERE ISNUMERIC(actionid) = 1
场景2:将空值视为'0'(包含空值的情况)
WHERE ISNUMERIC(COALESCE(actionid, '0')) = 1
这个函数会返回1(可转换为数值)或0(不可转换),无需执行实际的类型转换,从根源避免了转换失败的报错。
内容的提问来源于stack exchange,提问作者Robert Smith
相关产品推荐
相关产品推荐

