【问题标题】:Querying a SQL table column that contains JSON and updating a value in that JSON based on a condition查询包含 JSON 的 SQL 表列并根据条件更新该 JSON 中的值
【发布时间】:2017-03-24 18:51:29
【问题描述】:

这个表有大约 150 万行。特定列包含 JSON。我需要做的是查询该 JSON 的列,然后查询该 JSON 中的特定布尔键/对“FLAG”。如果“FLAG”是True,我需要将该JSON 中的另一个键/对更新为Null 值,而不是当前的字符串。

对我来说棘手的部分是我必须查询 JSON 本身并运行检查。但这不像我可以像其他语言那样索引 JSON,它实际上是我需要通过 sql-regex 查询的字符串。对于如何通过手术将第二个密钥/对更新为null,我也有点困惑。

 Json Start: 
 {
    "flag": true,
    "anotherKvP": "some string"
 }
 How I need the Json to be updated to: 
 {
    "flag": true
    "anotherKvP": null
 }

【问题讨论】:

  • mysql 还是 sql server?你能提供一些细节吗?
  • @SeanLange - 抱歉,SQL Server。更正了标签。添加了详细信息。

标签: sql-server json ssms-2012


【解决方案1】:

所以我最终遇到了一个名为 STUFF ( character_expression , start , length , replaceWith_expression ) 的函数,它允许我将字符串中的字符串组合在一起。这是第二部分。

第一部分,在我的FROM 子句中,我选择了需要拆分的值的索引,使用PATINDEX ( '%pattern%' , expression ) 收集图案位置的起始索引。

最后,WHERELIKE 用于对"flag": true 的查询进行模式匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 2012-07-13
    • 2022-12-03
    相关资源
    最近更新 更多