【问题标题】:UPDATE command in a JSONJSON 中的 UPDATE 命令
【发布时间】:2020-03-24 23:57:51
【问题描述】:

我正在尝试更新表中的一列,但该列存储了一个 JSON 对象,但为此我还需要使用 JSON 执行 where。

这就是数据在我的 RG 列中的存储方式:

{
   "Id":"00000",
   "Number":"12345678",
   "Emitter":"SSP/SP",
   "Uf":"SP",
   "Emission":"2020-03-04T03:00:00Z"
}

首先我想知道这个 SELECT 语句有什么问题:

select * from People where JSON_VALUE (Rg, '$.Uf') LIKE '%35%'

而我的 UPDATE 命令我尝试执行如下操作:

update People set Rg = JSON_MODIFY (Rg, '$.Uf', 'SP') where JSON_VALUE (Rg, '$.Uf') LIKE '%35%'

有人可以帮我做出选择和更新吗?我的命令有什么问题?当涉及JSON OBJECT 时,我无法理解如何执行这两个命令。

【问题讨论】:

  • 请不要使用图像来显示数据,而是将其格式化为更易于阅读的文本。
  • $.uf之间的空格是故意的吗?
  • 抱歉,我没看到空格

标签: sql json sql-server sql-update


【解决方案1】:

您的 SELECT 查询和 UPDATE 语句都很好。我在下面尝试了测试设置。我没有遇到任何问题。

测试设置

CREATE TABLE Test
(
  a int,
  rg NVARCHAR(MAX)
 )

 INSERT INTO Test
 values (1, N'{
   "Id":"00000",
   "Number":"12345678",
   "Emitter":"SSP/SP",
   "Uf":"SP",
   "Emission":"2020-03-04T03:00:00Z"
}');

运行选择查询

select * from Test where JSON_VALUE (Rg, '$.Uf') LIKE '%SP%'
+---+--------------------------------------------------------------------------------------------+
| a |                                                   rg                                                    |
+---+--------------------------------------------------------------------------------------------+
| 1 | { "Id":"00000", "Number":"12345678", "Emitter":"SSP/SP", "Uf":"SP", 
"Emission":"2020-03-04T03:00:00Z" } |
+---+--------------------------------------------------------------------------------------------+   

更新和选择以验证更新是否成功

update Test 
set rg = JSON_MODIFY(rg, '$.Uf', 'MP') 
where JSON_VALUE(rg, '$.Uf') LIKE '%SP%'
select * from Test;
+---+--------------------------------------------------------------------------------------------+
| a |                                                   rg                                                    |
+---+--------------------------------------------------------------------------------------------+
| 1 | { "Id":"00000", "Number":"12345678", "Emitter":"SSP/SP", "Uf":"MP", 
"Emission":"2020-03-04T03:00:00Z" } |
+---+--------------------------------------------------------------------------------------------+

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 2017-07-04
    • 1970-01-01
    • 2016-09-24
    • 2023-04-11
    • 1970-01-01
    • 2015-07-05
    相关资源
    最近更新 更多