我想将一个SQL查询转换成一个JSONiq查询,是否已经有了一个实现,如果没有,我需要知道什么才能创建一个程序来完成这个任务?
发布于 2016-12-23 11:19:25
但是,我不知道是否有实施办法,但在技术上是可行和直接的。JSONiq有90%的DNA来自于XQuery,这部分也是由参与XQuery的人设计的。
从数据模型的角度来看,表映射到集合,表的每一行映射到平面JSON对象,也就是说,所有字段都是原子值,如下所示:
{
"Name" : "Turing",
"First" : "Alan",
"Job" : "Inventor"
}然后,通过将SELECT-WHERE查询转换为FLWOR表达式来完成映射,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被称为from,return被称为select,并且如果这些关键字是大写的,那么JSONiq的语法将非常类似于SQL:它只是化妆品。
https://stackoverflow.com/questions/41089242
复制相似问题