我有一个类型为JSON的列,但它包含如下JSON字符串:

"{\"a\":1,\"b\":2,\"c\":3}"

我想用适当的JSON对象更新列中的值,不带引号和转义,如下所示:

{"a":1,"b":2,"c":3}

我try 了下面的语句,即使它说它确实更新了行,列仍然是相同的.

UPDATE table SET column = to_json(column);

to_json函数似乎不起作用,因为它是一个JSON字符串?

我如何更新这些值?

推荐答案

您可以将JSON列转换为文本,删除不需要的引号和转义,然后将结果文本转换为JSON.

update tbl
set js = trim(replace(js::text, '\',''), '"')::json 

demo

Sql相关问答推荐

如果开始期间不存在PostgresSql回填数据

解析SQL Server中的嵌套JSON

为什么TRY_CONVERT返回一个XML验证错误而不是NULL?

不同表达方式时的大小写

最近3个月收到的邮箱总数

基于是否具有某些数据的关联表覆盖SELECT语句中的列值

PATINDEX中与[A-Z]匹配(U除外)的正则表达式

在VB.NET中如何在MS Access数据库中创建SQL项目历史库存卡

更改重复值的情况

查询以从时间范围列表中查找唯一时间段

返回给定日期后的第 4 个工作日(不包括公众假期)

SQL Server: 将JSON对象数组转换为表格格式

比使用NOT EXISTS更高效的SQL删除方法是什么?

基于 Snowflake 的最大值创建新列

如何在一个存储过程中创建全局临时表,并在另一个存储过程中使用它

如何在 SQL Server 中参数化 Select top 'n'

从多个连接返回 1 行到同一个表 - SQL Server

Select 随机行,使得列子组的组合是唯一的

如何优化sql请求?

SQL:有没有办法根据另一列的数据细节过滤和形成另一列?