javascript - 如何在 SQL 中替换 json 字符串中的数字数组?

标签 javascript c# sql arrays tsql

SQL 中的数据在单元格中包含一个长长的 JSON 字符串,类似于这样:

{
  "Name": "Example",
  "Results": [
    {
      "ResultId": 0,
      "AnswerIds": "[1,2,33,4,5]"
    },
    {
      "ResultId": 1,
      "AnswerIds": "[2,3,4,55,6]"
    }
  ]
}

我有一个替换 AnswerId 的列表:将所有 2 替换为 7,将所有 3 替换为 8

我怎样才能为此编写脚本?

我能够使用 crossapply 和 JSON_Query 隔离 AnswerId,但不确定如何着手替换一个数组中的多个更改。

最佳答案

const json = {
  "Name": "Example",
  "Results": [
    {
      "ResultId": 0,
      "AnswerIds": "[1,2,33,4,5]"
    },
    {
      "ResultId": 1,
      "AnswerIds": "[2,3,4,55,6]"
    }
  ]
}

json.Results.forEach((itm, index)=> {
   const arr = JSON.parse(itm.AnswerIds);
   const replacedArray = arr.map(num=>{
      if(num === 2) return 7;
      if(num === 3) return 8;
      return num;
   });
   json.Results[index].AnswerIds = JSON.stringify(replacedArray);
})

console.log(json);

这就是我所做的,获取 json.Results 数组并使用 forEach 循环对其进行迭代。

然后您可以访问每个结果的 AnswerIds 对象。

由于 AnswerIds 的值是一个字符串,我们首先将其转换为一个数组。

然后我们使用映射遍历该数组,并进行替换。

您可能想阅读JS mapsJS foreachJSON.parseJSON.stringify

关于javascript - 如何在 SQL 中替换 json 字符串中的数字数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57615299/

相关文章:

c# - 使用 Linq 解析包含尖括号的值的 XML

c# - 无法直观地更改继承形式的 DataGridView

c# - 在 C# 中的事务内循环

javascript - AWS Cloudfront 将 javascript 模块作为错误的 MIME 类型 ( "Text/Plain")

javascript - 当我为视频元素指定 css 类名时,为什么我的 html 会被覆盖?

c# - PythonEngine.Initialize() 失败且没有任何错误消息

sql - Mysql4 : SQL for selecting one or zero record

mysql - MySQL 查询出错

javascript - 将数组添加到 json 对象 angularjs

javascript - 如何使函数影响类中的所有内容,同时也考虑数据属性