SQL 查询到 JSONiq 查询

SQL Query to JSONiq Query

我想将 SQL 查询转换为 JSONiq 查询,是否已经有一个实现,如果没有,我需要知道什么才能创建一个可以执行此操作的程序?

我不知道实现,但是,它在技术上是可行且简单的。 JSONiq 90% 的 DNA 来自 XQuery,而 XQuery 本身也部分由参与 SQL 的人员设计。

从数据模型的角度来看,table 被映射到一个集合,table 的每一行被映射到一个扁平的 JSON 对象,即所有字段都是原子的值,像这样:

{
  "Name" : "Turing",
  "First" : "Alan",
  "Job" : "Inventor"
}

然后,通过将 SELECT-FROM-WHERE 查询转换为 FLWOR 表达式来完成映射,这提供了 SQL 功能的超集。

例如:

SELECT Name, First
FROM people
WHERE Job = "Inventor"

可以映射到:

for $person in collection("people")
where $person.job eq "Inventor"
return project($person, ("Name", "First"))

更复杂的查询也可以非常直接地映射:

SELECT Name, COUNT(*)
FROM people
WHERE Job = "Inventor"
GROUP BY Name
HAVING COUNT(*) >= 2

至:

for $person in collection("people")
where $person.job eq "Inventor"
group by $name := $person.name
where count($person) ge 2
return {
  name: $name,
  count: count($person)
}

实际上,如果for调用了fromreturn调用了select,如果这些关键字写成大写,[=35的语法=]iq 与 SQL 非常相似:它只是化妆品。