あなたは私のいくつかの初歩的なものを利用することができます私は過去に使用してきたSQLからJSONへのロジックですが、それは私のデータセットに特有のものかもしれません。私は少しそれを一般化しようとしました。/ *
SET NOCOUNT ON;
--sample table
CREATE TABLE #Temp(
Id INT Identity(1,1),
Column1 INT,
Column2 VARCHAR(10),
Column3 VARCHAR(10)
)
;
INSERT INTO #Temp(Column1, Column2, Column3) VALUES (10,'Test', 'Test2'), (20, 'Test3', 'Test4'), (30, 'Test5', 'Test6');
WITH
cte AS(
SELECT Id AS RowId,
CAST(Id AS VARCHAR(100)) AS Id,
CAST(Column1 AS VARCHAR(100)) AS Column1,
CAST(Column2 AS VARCHAR(100)) AS Column2,
CAST(Column3 AS VARCHAR(100)) AS Column3
FROM #Temp
),
cte2 AS (
SELECT RowId,
'"' + PropertyName + '"' + ':' + CASE WHEN ISNUMERIC(Value) = 1 THEN Value ELSE '"' + Value + '"' END AS Value,
ROW_NUMBER() OVER(PARTITION BY RowId ORDER BY CASE WHEN PropertyName = 'Id' THEN '' ELSE PropertyName END) AS RowNum,
ROW_NUMBER() OVER(ORDER BY RowId) AS RowNum2
FROM cte
UNPIVOT(
Value
FOR PropertyName IN (
Id,
Column1,
Column2,
Column3
)
) upvt
)
SELECT CASE WHEN cte2.RowNum2 = y.MinRowNum THEN '[' ELSE '' END,
CASE WHEN cte2.RowNum = x.MinRowNum THEN '{' ELSE '' END,
cte2.value,
CASE WHEN cte2.RowNum <> x.MaxRowNum THEN ',' ELSE '' END,
CASE
WHEN cte2.RowNum = x.MaxRowNum THEN '}' +
CASE WHEN cte2.RowNum2 = y.MaxRowNum THEN '' ELSE ',' END
ELSE ''
END,
CASE WHEN cte2.RowNum2 = y.MaxRowNum THEN ']' ELSE '' END
FROM cte2
INNER JOIN (
SELECT RowId,
MIN(RowNum) AS MinRowNum,
MAX(RowNum) AS MaxRowNum
FROM cte2
GROUP BY RowId
) x
ON cte2.RowId = x.RowId
CROSS JOIN (
SELECT MIN(RowNum2) AS MinRowNum,
MAX(RowNum2) AS MaxRowNum
FROM cte2
) y
;
--output以下の通りであろう:
[{ "ID":1、
"列1":10、
"列2" を "テスト"、
"COLUMN3": "Test2を"}、
{ "ID":2、
"列1":20、
"列2": "Test3は"
"COLUMN3": "TEST4"}、
{ "ID":3、
"列1":30、
"列2": "TEST5"、
"COLUMN3": "TEST6"}] */
あなたがここに投票したい場合がありますhttp://connect.microsoft.com/SQLServer/feedback/details/673824/add-native-support-for-json-to-sql-server-a-la-xml-as-in-for-json-or -from-openjson –
これにはサーバーサイドスクリプトを使用する必要があります。データベースの更新が行われるたびに.jsonファイルを更新するのは経済的ですか?確かに、データをシリアル化して1つのSQLフィールドに入れる方が良いでしょうか? – shennan
重複した質問はありますか? http://stackoverflow.com/questions/1562128/how-can-i-get-a-json-object-from-a-sql-server-table –