错误类

SQLSTATE: 22003

该指数< indexValue >出界。数组有< arraySize >元素。使用try_element_at允许访问无效索引的元素并返回NULL。必要时设置< ansiConfig >以“false”绕过此错误。

参数

  • indexValue:数组中请求的索引。

  • arraySize:数组的基数。

  • ansiConfig:更改ANSI模式的配置设置。

解释

indexValue元素的定义数组元素的边界之外element_at (arrayExpr indexValue),或英语教学(arrayExpr indexValue)表达式。

取值必须为between-arraySize而且arraySize(不包括0

缓解

此错误的缓解取决于原因:

  • 数组的基数比预期的小吗?

    修复输入数组并重新运行查询。

  • indexValue计算错误?

    调整indexValue并重新运行查询。

  • 你希望得到a吗为索引基数之外的元素返回的值?

    如果可以更改表达式,请使用try_element_at (arrayExpr indexValue)允许引用越界。

    如果不能更改表达式,作为最后的手段,请临时设置ansiConfig允许引用越界。

例子

——INVALID_ARRAY_INDEX_IN_ELEMENT_AT错误,因为索引不匹配>选择element_at数组“一个”“b”“c”),指数1),4作为T指数);INVALID_ARRAY_INDEX_IN_ELEMENT_AT指数4界限数组3.元素如果必要的“ANSI_MODE”绕过错误——增加数组大小以覆盖索引>选择element_at数组“一个”“b”“c”' d '),指数1),4作为T指数);一个d——调整索引以匹配数组>选择element_at数组“一个”“b”“c”),指数1),3.作为T指数);一个c—允许超出绑定的数组索引,调整为基于1的索引>选择try_element_at数组“一个”“b”“c”),指数1),4作为T指数);一个——通过在Databricks SQL中设置ansiConfig来容忍越界>ANSI_MODE>选择element_at数组“一个”“b”“c”),指数1),4作为T指数);一个>ANSI_MODE真正的——通过在Databricks Runtime中设置ansiConfig来容忍超出边界>火花sqlansi启用>选择element_at数组“一个”“b”“c”),指数1),4作为T指数);一个>火花sqlansi启用真正的