2017-05-03 78 views
0

我想動態生成sql查詢。我發現這個工具將Json對象轉換爲SQL表

http://querybuilder.js.org/demo.html 

而且我有以下的JSON對象:

{ 
    "condition": "AND", 
    "rules": [ 
    { 
     "id": "name", 
     "field": "name", 
     "type": "string", 
     "input": "text", 
     "operator": "equal", 
     "value": "zura" 
    }, 
    { 
     "condition": "OR", 
     "rules": [ 
     { 
      "id": "category", 
      "field": "category", 
      "type": "integer", 
      "input": "select", 
      "operator": "equal", 
      "value": "1" 
     }, 
     { 
      "id": "price", 
      "field": "price", 
      "type": "double", 
      "input": "number", 
      "operator": "equal", 
      "value": "123" 
     } 
     ] 
    }, 
    { 
     "id": "in_stock", 
     "field": "in_stock", 
     "type": "integer", 
     "input": "radio", 
     "operator": "equal", 
     "value": "1" 
    }, 
    { 
     "condition": "AND", 
     "rules": [ 
     { 
      "id": "category", 
      "field": "category", 
      "type": "integer", 
      "input": "select", 
      "operator": "equal", 
      "value": "2" 
     }, 
     { 
      "id": "in_stock", 
      "field": "in_stock", 
      "type": "integer", 
      "input": "radio", 
      "operator": "equal", 
      "value": "0" 
     } 
     ] 
    } 
    ] 
} 

現在我想以正確保存這個JSON數據生成SQL表。 有什麼辦法可以生成表,如果是的話請給我鏈接或請幫我創建同一張表

+1

我看不出鍵值如何轉換爲SQL數據類型,即'VARCHAR','TEXT'等(https://www.w3schools.com/sql/sql_datatypes_general.asp)。你可以使用CREATE TABLE語句(https://www.w3schools.com/sql/sql_create_table.asp),但根據你的JSON值,我不認爲你會創建一個有效的SQL表。例如,從你的數據:'rules [「type」] = string','string'不是一個有效的SQL數據類型,而'VARCHAR(200)'是。如果您要動態生成基於對象的表格,我假設您至少需要正確的數據類型作爲關鍵值。 – natureminded

+0

數據類型不計量,首先我只需要Table(May Be tables)結構來保存我的JSON數據。我可以隨時更改表格中的數據類型。 –

+0

爲了建立一個SQL表格的結構,你首先必須「CREATE TABLE」(見我最近的評論中的鏈接)。在創建表格時,必須定義其結構,這需要定義數據類型。 IE,SQL表必須知道期望的數據類型(數字,文本等)。據我所知,你不能創建一個SQL表,沒有爲你試圖捕獲的屬性設置數據類型。這是創建表時的一個要求。很多人使用MySQL Workbench來編寫他們的願景,程序爲他們吐出SQL表。 – natureminded

回答

0

您的JSON數據需要使用遞歸SQL函數。你首先需要創建一個自引用的表像這樣被解碼:

CREATE TABLE jsonCondition(
ConditionId INT IDENTITY, 
ParentCondotionId INT , 
Id NVARCHAR(20), 
Field NVARCHAR(20), 
Type NVARCHAR(20), 
Input NVARCHAR(20), 
Operator NVARCHAR(20), 
Value NVARCHAR(20) 
) 

,那麼請參考我的另JSON遞歸轉換爲SQL在: How to generate hierarchical JSON data with Microsoft SQL Server 2016?

如果你仍然有與轉換困難,讓我知道: My linked in Profile

0

這是非常基本的,但應該工作。用任何適合你的方式替換表名。字段大小非常寬,但我不知道輸入值將會是什麼,除非您提供其他信息。

CREATE TABLE [NameYourTableHere] 
(Name VARCHAR(MAX), 
Category BIGINT, 
Price DECIMAL(19,2), 
In_Stock INT) 
+0

您的表格結構也不正確。你能再次看到我的JSON嗎? –