You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redshift中移除super类型列c1内反斜杠的SQL方案咨询

解决Redshift Super类型列移除JSON转义反斜杠的问题

问题原因分析

你原语句无效的核心问题有两个:

  1. REGEXP_REPLACE的第四个参数设为1,只会替换第一个反斜杠,无法处理数据里的多个转义符
  2. 替换后的字符串未转回SUPER类型,Redshift的Super列不能直接接收字符串赋值

正确SQL语句

UPDATE t1
SET c1 = JSON_PARSE(REGEXP_REPLACE(c1::VARCHAR(max), '\\\\', '', 0))
WHERE c1 IS NOT NULL;

语句说明

  • c1::VARCHAR(max):把Super类型列转换为字符串格式,方便处理转义符
  • REGEXP_REPLACE(..., '\\\\', '', 0):
    • 正则中的\\\\对应实际的单个反斜杠(SQL和正则语法对反斜杠都需要双重转义,所以写4个)
    • 最后一个参数0表示替换所有匹配到的反斜杠
  • JSON_PARSE(...):将处理后的纯JSON字符串重新解析为Super类型,确保能正确赋值回c1列

结果验证

执行更新后,可通过以下语句确认效果:

SELECT c1, c1::VARCHAR(max) FROM t1 WHERE c1 IS NOT NULL;

此时返回的字符串应为{"xyz1":"","xyz2":"No","zyx3":"RSR"},Super类型的c1也能正常作为JSON使用。

内容的提问来源于stack exchange,提问作者muruga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 06:58:09