2016-12-11 98 views
1

我想將SQL查詢轉換爲JSONiq查詢,是否已經有一個實現,如果沒有,我需要知道什麼才能創建一個可以執行此操作的程序?SQL查詢到JSONiq查詢

+0

你對JSONIQ瞭解多少? – McNets

+0

截至目前,我什麼都不知道,我只知道它是XQuery的JSON文件 – user203788

回答

1

我不知道有一個實現,但是,它在技術上是可行和簡單的。 JSONiq擁有90%的DNA來自XQuery,它本身也部分由參與SQL的人員設計。

從數據模型的角度看,一個表被映射到一個收集和表中的每一行被映射到一個平坦JSON對象,也就是說,所有字段都是原子值,如下所示:

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

然後,通過將SELECT-FROM-WHERE查詢轉換爲提供SQL功能超集的FLWOR表達式來完成映射。

例如:

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,如果這些關鍵字寫大寫字母,JSONiq的語法將非常類似於SQL的:它是唯一的化妝品。

+0

感謝您的詳細解答,我現在不能因爲我的聲譽而高舉您的答案,但我會盡我所能, – user203788