sql-仅访问特定列中结构值的第一行

yduiuuwa  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(273)

这是我的表格格式。
自定义字段记录重复
自定义字段。值记录可为空
自定义字段。值。名称字符串可为空
自定义字段。值。值字符串可为空
我想访问“custom\u fields.value.name”。我试过:

SELECT * from [my_database] 
WHERE custom_fields.value.name = "something";

无法访问[1:78]处类型为array<struct<value struct<name string,value string>>>的值的字段值
我可能会使用另一个表,因为我觉得格式很难轻松使用。但我会很感激你对这个问题的看法。
谢谢

jvidinwx

jvidinwx1#

阵列在极少数数据库中可用。但是在这样做的情况下,需要对数组进行索引。错误消息看起来像bigquery。
如果要查看第一个值,则可以使用:

SELECT * 
FROM [my_database] 
WHERE custom_fields[SAFE_ORDINAL(1)].value.name = 'something';

如果要返回任何值匹配的行,请使用 UNNEST()WHERE 条款:

SELECT * 
FROM [my_database] 
WHERE EXISTS (SELECT 1 FROM UNNEST(custom_fields) cf WHERE cf.value.name = 'something');

如果你只想要 customer_fields 那场比赛,然后移动 UNNEST() 从`:

SELECT t.* EXCEPT (customer_fields), cf 
FROM [my_database] t CROSS JOIN
     UNNEST(custom_fields) cf
WHERE cf.value.name = 'something');

相关问题