我在sql server 2016中有一个系统版本的表.我想在用户对表执行删除或更新操作时在其时态(历史)表中存储修饰符ID .
sql server 2016 有没有内置的解决方案呢?
使用PostgreSQL我可以拥有多行json对象.
select (select ROW_TO_JSON(_) from (select c.name, c.age) as _) as jsonresult from employee as c
Run Code Online (Sandbox Code Playgroud)
这给了我这个结果:
{"age":65,"name":"NAME"}
{"age":21,"name":"SURNAME"}
Run Code Online (Sandbox Code Playgroud)
但是在SqlServer中,当我使用FOR JSON AUTO子句时,它为我提供了一个json对象数组,而不是多行.
select c.name, c.age from customer c FOR JSON AUTO
[{"age":65,"name":"NAME"},{"age":21,"name":"SURNAME"}]
Run Code Online (Sandbox Code Playgroud)
如何在SqlServer中获得相同的结果格式?
我有一个如下所示的表格.我想要的是彼此连续的行被组合在一起 - 对于每个"ID".列IsContinued标记下一行是否应与当前行组合
我的数据如下:
+-----+--------+-------------+-----------+----------+
| ID | Period | IsContinued | StartDate | EndDate |
+-----+--------+-------------+-----------+----------+
| 123 | 1 | 1 | 20180101 | 20180404 |
+-----+--------+-------------+-----------+----------+
| 123 | 2 | 1 | 20180501 | 20180910 |
+-----+--------+-------------+-----------+----------+
| 123 | 3 | 0 | 20181001 | 20181201 |
+-----+--------+-------------+-----------+----------+
| 123 | 4 | 1 | 20190105 | 20190228 |
+-----+--------+-------------+-----------+----------+
| 123 | 5 | 0 | 20190401 | 20190430 |
+-----+--------+-------------+-----------+----------+
| 456 | …Run Code Online (Sandbox Code Playgroud) 我正在使用Sql Server 2016,我想将表转换为json.
我有一个简单的表:
CREATE TABLE [dbo].[TableTmp](
[Color] [nvarchar](50) NULL,
[Type] [nvarchar](50) NULL,
[Number] [nvarchar](50) NULL
) ON [PRIMARY]
GO
INSERT [dbo].[TableTmp] ([Color], [Type], [Number]) VALUES (N'Blue', N'A', N'1')
GO
INSERT [dbo].[TableTmp] ([Color], [Type], [Number]) VALUES (N'Blue', N'A', N'2')
GO
INSERT [dbo].[TableTmp] ([Color], [Type], [Number]) VALUES (N'Blue', N'A', N'3')
GO
INSERT [dbo].[TableTmp] ([Color], [Type], [Number]) VALUES (N'Blue', N'B', N'1')
GO
INSERT [dbo].[TableTmp] ([Color], [Type], [Number]) VALUES (N'Blue', N'C', N'1')
GO
INSERT [dbo].[TableTmp] ([Color], [Type], [Number]) VALUES (N'Red', N'A', N'1')
GO …Run Code Online (Sandbox Code Playgroud) 我正在操作SQL Azure表/数据库中的JSON列,JSON对象形成如下:
{
"statusId": "5A5BC717-F33A-42A5-8E48-99531C30EC87",
"creationDateTime": "",
"assignations": [
{
"userId": "CA3B0589-B558-4FCC-93A6-560754D324FC",
"dateTime": "",
"isCurrentAssigned": false
},
{
"userId": "CA3B0589-B558-4FCC-93A6-560754D325E8",
"dateTime": "",
"isCurrentAssigned": false
},
{
"userId": "CA3B0589-B558-4FCC-93A6-560754D347N",
"dateTime": "",
"isCurrentAssigned": true
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想要完成的是在数组"assignations"中找到一个特定的元素,然后更新它的一些属性,就像这样:
UPDATE MyTable
SET JsonData = JSON_MODIFY(JsonData, '$.assignations.isCurrentAssigned', CONVERT(BIT, 0))
FROM MyDb
WHERE JSON_VALUE(JsonData, '$.assignations.isCurrentAssigned') = CONVERT(BIT, 1) AND
JSON_VALUE(JsonData, '$.assignations.userId') = CONVERT(UNIQUEIDENTIFIER, 'CA3B0589-B558-4FCC-93A6-560754D347N')
Run Code Online (Sandbox Code Playgroud)
当然这个T-SQL无法正常工作,我将不胜感激
我有一个表[JsonTable],列[JsonData]保存json字符串,
JsonData像:
{
"Names": ["John", "Joe", "Sam"]
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能像这样内部连接该表:
SELECT* FROM [TestTable] AS T
INNER JOIN [JsonTable] AS J ON T.[Name] IN JSON_QUERY(J.[JsonData], '$.Names')
Run Code Online (Sandbox Code Playgroud) 我正在开发一个 Web 项目,其中客户端应用程序通过 JSON 与 DB 进行通信。
最初的实现发生在 SQL Server 2012(不支持 JSON,因此我们实现了一个处理解析的存储函数),现在我们正在移动到 2016(支持 JSON)。
到目前为止,我们显着减少了处理时间(在某些情况下,速度提高了 200 倍以上!)。
有一些交互包含需要转换为表的数组。为了实现这一点,该OPENJSON函数几乎可以满足我们的需求。
在其中一些(基于数组的)情况下,数组中的记录具有一个或多个也是 OBJECTS 的字段(在这种特殊情况下,也是数组),例如:
[{
"Formal_Round_Method": "Floor",
"Public_Round_Method": "Closest",
"Formal_Precision": "3",
"Public_Precision": "3",
"Formal_Significant_Digits": "3",
"Public_Significant_Digits": "3",
"General_Comment": [{
"Timestamp": "2018-07-16 09:19",
"From": "1",
"Type": "Routine_Report",
"Body": "[To + Media + What]: Comment 1",
"$$hashKey": "object:1848"
}, {
"Timestamp": "2018-07-16 09:19",
"From": "1",
"Type": "User_Comment",
"Body": "[]: Comment 2",
"$$hashKey": "object:1857"
}, {
"Timestamp": "2018-07-16 09:19",
"From": "1",
"Type": …Run Code Online (Sandbox Code Playgroud) 我正在 SQL Server 2016 中的 SSMS 中使用 JSON。有什么办法可以解决 FOR JSON 语句的结果显示为 XML 列的问题?
是否有任何设置更改、附加组件、外部工具等,甚至是 hack 来减轻痛苦?
在我的理想世界中,单击 JSON 列(或 XML 列)将在我选择的文本编辑器中打开,例如 Visual Studio Code,SSMS 知道列中的字符串是 JSON 并将其保存到文件带有 .json 扩展名。
我正在尝试评估商店访客对 COVID-19 传播的影响。
这是一个简单的场景:
当我收集所有访问者数据以及他们在一段时间内遇到的人时,数据集如下所示:
表visitorByEmployee:
| VisitorID | EmployeeID | Contact |
+-----------+------------+-------------------+
| 100 | X123 | 3/11/2020 1:00 |
| 100 | X124 | 3/11/2020 1:10 |
| 101 | X123 | 3/12/2020 1:11 |
| 101 | X125 | 3/11/2020 1:20 |
| …Run Code Online (Sandbox Code Playgroud) sql-server-2016 ×10
sql-server ×6
json ×4
sql ×3
t-sql ×3
arrays ×1
for-json ×1
inner-join ×1
json-query ×1
ssms ×1
temporal ×1