- 类别:
半结构化和结构化数据函数 (提取)
GET_IGNORE_CASE¶
从对象中提取字段值;如果任一实参为 NULL,则返回 NULL。
备注
此函数类似于 GET,但对字段名称应用不区分大小写的匹配。
- 另请参阅:
语法¶
OBJECT (或包含 OBJECT 的 VARIANT)
GET_IGNORE_CASE( <object> , <field_name> )
GET_IGNORE_CASE( <variant> , <field_name> )
MAP
GET_IGNORE_CASE( <map> , <key> )
实参¶
variant
计算结果为包含 ARRAY 或 OBJECT 的 VARIANT 的表达式。
object
计算结果为包含键值对的 OBJECT 的表达式。
field_name
计算结果为 VARCHAR 的表达式。这指定了您想要检索值的键值对中的键。
field_name
不能是空字符串。如果
object
是 结构化 OBJECT,则必须为field_name
指定一个常数。如果
object
不包含指定键:如果
object
为半结构化 OBJECT,则该函数返回 NULL。如果
object
是结构化 OBJECT,则会发生错误。
map
计算结果为 MAP 的表达式。
key
您要检索其值的键值对中的键。
如果
map
不包含指定的键,则该函数返回 NULL。
返回¶
返回值是 ARRAY 的指定元素,或者是对应于 OBJECT 中键值对的指定键的值。
如果输入对象是半结构化 OBJECT、ARRAY 或 VARIANT,则该函数返回 VARIANT。数据类型为 VARIANT,因为:
在 ARRAY 中,每个元素都属于 VARIANT 类型。
在 OBJECT 中,每个键值对中的值都是 VARIANT 类型。
如果输入对象是 结构化 OBJECT、结构化 ARRAY或 MAP,该函数返回为该对象指定的类型的值。
例如,如果输入对象的类型是 ARRAY(NUMBER),则该函数返回 NUMBER。
使用说明¶
此函数返回它找到的第一个完全匹配项。如果函数仅找到不明确(不区分大小写)的匹配项,则返回其中一个匹配项的值;但是,不能保证首先匹配哪个不明确的字段名称。
GET_IGNORE_CASE 是一个二进制函数,可以通过以下方式调用:
object
是一个 OBJECT 值;field_name
是一个字符串值,可以是常量或表达式。此 GET_IGNORE_CASE 变体从对象值中提取具有所提供名称的字段的值。
v
是一个 VARIANT 值;field_name
是一个字符串值,可以是常量或表达式。与 GET_IGNORE_CASE 和
object
的工作方式类似,但还会检查v
是否包含对象值(如果v
不包含对象,则返回 NULL)。
示例¶
从对象中提取字段值。该函数返回完全匹配的值:
SELECT GET_IGNORE_CASE(TO_OBJECT(PARSE_JSON('{"aa":1, "aA":2, "Aa":3, "AA":4}')),'aA') as output;
+--------+
| OUTPUT |
|--------|
| 2 |
+--------+
从对象中提取字段值。该函数找不到完全匹配项,因此返回一个不明确的匹配项:
SELECT GET_IGNORE_CASE(TO_OBJECT(PARSE_JSON('{"aa":1, "aA":2, "Aa":3}')),'AA') as output;
+--------+
| OUTPUT |
|--------|
| 3 |
+--------+
有关更详细的示例,请参阅 查询半结构化数据。