PG SQL 问题:Character with value 0x0a must be escaped

Character with value 0x0a must be escaped

UPDATE gas_dev_ext as e
SET map_attr = jsonb_set(map_attr, '{addr}', (select concat('"',addr,'"') from gas_dev_base where id = e.id)::jsonb ,true)
> ERROR:  invalid input syntax for type json
DETAIL:  Character with value 0x0a must be escaped.
CONTEXT:  JSON data, line 1: "253

这个错误是因为在JSON中存在一个无法解析的字符,具体是一个换行符(0x0a)需要进行转义。

你可以使用replace函数将换行符转义为\n,并在拼接字符串时添加一个额外的引号来解决这个问题。

以下是修改后的代码:

UPDATE gas_dev_ext AS e
SET map_attr = jsonb_set(map_attr, '{addr}', (SELECT CONCAT('"', REPLACE(addr, CHR(10), '\\n'), '"') FROM gas_dev_base WHERE id = e.id)::jsonb, true);

这样就能够成功执行更新操作了。注意在转义换行符时需要使用双斜杠\n。

你可能感兴趣的:(postgreSQL,sql)