[英]Create JSON from SQL Server 2016+ (using for JSON path command)
我正在嘗試以特定的JSON格式創建一些輸出,這是輸出的示例(將重復多次-每所大學一次):
{
"id": "37e556ae6b9f620d2b7262d3de971c40",
"recordType": "school",
"created": 1532531378,
"updated": 1532531378,
"published": 1532531378,
"name": "ABC University – ABC School of Management",
"schoolName": "ABC School of Management",
"universityName": "ABC University",
"sortableName": "ABC School of Management"
}
我一直在考慮使用SQL,因為它具有FOR JSON命令,該命令可處理JSON格式並處理嵌套。 在對值進行硬編碼時,可以使用以下代碼重新創建以上代碼:
SELECT
HASHBYTES('md5','something') AS id
,'school' AS recordType
,getdate() AS created
,getdate() AS updated
,getdate() AS published
,'ABC University – ABC School of Management' AS name
,'ABC School of Management' as schoolname
,'ABC University' as universityName
, 'ABC School of Management' as sortableName
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
我的問題是我需要為不同的大學創建100次輸出。 我想在SQL中創建數據庫表並對其進行操作。 這是Excel中數據的示例,我已經過濾了列表以僅顯示上述數據和稍后單獨輸出中需要的其他兩個數據點(我將擔心其他輸出)后來):
IndiUID SchoolCode DataValue Ranking Band RegionalRank
OVERALL_SCORE XYZ 105 D 23
SCHOOL_NAME_FORMAL XYZ XYZ Institute of Management
SCHOOL_NAME_SORTABLE XYZ XYZ Institute of Management
SCHOOL_NAME_AND_BUSINESS_SCHOOL_NAME XYZ XYZ Institute of Management, XYZ School of Business
STUDENTS_MEDIAN_AGE XYZ 26
OVERALL_SCORE ABC 35 B 3
SCHOOL_NAME_FORMAL ABC ABC School of Management
SCHOOL_NAME_SORTABLE ABC ABC School of Management
SCHOOL_NAME_AND_BUSINESS_SCHOOL_NAME ABC ABC University – ABC School of Management
STUDENTS_MEDIAN_AGE ABC 26
我只是不太了解如何構造表,因此可以使用SQL提取相關部分。 我想知道是否應該透視表,以使“ IndiUID”的值成為數據庫表中的字段,或者為每個當前標題項(DataValue,Ranking,Band等)創建一個新表。
我以為我可以從indiUID = OVERALL_SCORE,SCHOOL_NAME_FORMAL等表格中選擇,但我想知道這是否太亂了。
這就是我遇到的問題–如何將這些數據組織到表中以便能夠提取數據? 這主要是關於創建JSON輸出,因此與數據庫部分是一個特別優雅的解決方案無關(這不會-我對SQL非常基礎!)。
您可以嘗試以下
樣本數據 :
CREATE TABLE [#school]
([school_name_and_business_school_name] VARCHAR(255),
[school_name] VARCHAR(255),
[university_name] VARCHAR(255),
[school_sortable] VARCHAR(255)
);
INSERT INTO [#school]
VALUES
('ABC University – ABC School of Management',
'ABC School of Management',
'ABC University',
'ABC School of Management'
),
('XYZ University – XYZ School of Management',
'XYZ School of Management',
'XYZ University',
'XYZ School of Management'
),
('QWE University – QWEC School of Management',
'QWE School of Management',
'QWE University',
'QWE School of Management'
);
然后使用此查詢:
SELECT HASHBYTES('md5', 'something') AS [id],
'school' AS [recordType],
GETDATE() AS [created],
GETDATE() AS [updated],
GETDATE() AS [published],
[school_name_and_business_school_name] AS [name],
[school_name] AS [schoolName],
[university_name] AS [universityName],
[school_sortable] AS [sortableName]
FROM [#school]
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER;
給您以下結果:
{"id":"Q3uTDbhLgHnC3YBKcZNrXw==",
"recordType":"school",
"created":"2018-09-07T10:14:44.130",
"updated":"2018-09-07T10:14:44.130",
"published":"2018-09-07T10:14:44.130",
"name":"ABC University – ABC School of Management",
"schoolName":"ABC School of Management",
"universityName":"ABC University",
"sortableName":"ABC School of Management"
},
{"id":"Q3uTDbhLgHnC3YBKcZNrXw==",
"recordType":"school",
"created":"2018-09-07T10:14:44.130",
"updated":"2018-09-07T10:14:44.130",
"published":"2018-09-07T10:14:44.130",
"name":"XYZ University – XYZ School of Management",
"schoolName":"XYZ School of Management",
"universityName":"XYZ University",
"sortableName":"XYZ School of Management"
},
{"id":"Q3uTDbhLgHnC3YBKcZNrXw==",
"recordType":"school",
"created":"2018-09-07T10:14:44.130",
"updated":"2018-09-07T10:14:44.130",
"published":"2018-09-07T10:14:44.130",
"name":"QWE University – QWEC School of Management",
"schoolName":"QWE School of Management",
"universityName":"QWE University",
"sortableName":"QWE School of Management"
}
這有幫助嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.