gpt4 book ai didi

sql - Azure SQL如何获取数组中满足条件的第一个元素

转载 作者:行者123 更新时间:2023-12-03 02:30:20 25 4
gpt4 key购买 nike

我有一个带有 body 的集合:

{
"id": "666",
"name": "Test",
"lastEvents": [
{
"show": false,
"eventType": "TYPE_1",
"creationDateTime": "2020-08-16T11:59:00"
},
{
"show": false,
"eventType": "TYPE_33",
"creationDateTime": "2020-10-14T06:11:00",
"control": "test repaired"
},
{
"show": false,
"eventType": "TYPE_33",
"creationDateTime": "2020-10-14T06:08:00",
"control": "test recovered"
}
],
"_rid": "kgsjAN-JFWEDQEQWESDAD==",
"_self": "JFWE=/docs/kgsjAN-JFWEDQEQWESDAD==/dbs/kgsjAA==/colls/kgsjAN",
"_etag": "\"666-0000-750011b7-0000-5eec704f0000\"",
"_attachments": "attachments/",
"_ts": 1592873510
}

我想通过 first lastEvents.control 字段过滤它。现在我正在使用:

SELECT * 
FROM root r
WHERE EXISTS(
SELECT VALUE n
FROM n IN r.lastEventFields
WHERE CONTAINS(n.control, "recovered", true)
)

但是这个查询遍历所有lastEvent数组。就我而言,我必须仅检查带有 control 字段的第一个元素。我怎样才能达到预期的行为?

最佳答案

如果我没有误解的话,您想要获取 lastEvents 数组中第一个元素具有 control 字段的文档,并且它需要包含“recovered”字符串.

如果是这样,SQL就无法达到您的要求。

解决方法:

1.创建UDF并循环lastEvents数组。 UDF可能价格昂贵,请注意。如果您需要,我可以提供JS代码。

2.在保存/更新文档之前,在文档中添加一个字段,以在客户端检查它是否满足您的需要。如果您经常更新文档,这不是一个好的选择。

3.获取您的所有文档并在客户端过滤它们。

关于sql - Azure SQL如何获取数组中满足条件的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65322162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com