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

Redshift中json_extract_array_element_text不解义转义字符?是否有意及如何移除?

关于Redshift中json_extract_array_element_text的转义问题

在Redshift中执行以下查询时,原本期望json_extract_array_element_text能移除值中的反斜杠:

select
    j, 
    json_extract_array_element_text(j, 0) as a
from (select '["\"b\""]' as j);

但实际提取的字符串并未移除反斜杠,结果如下:

["\"b\""]
\"b\"

提问:这是有意设计的吗?若是,移除反斜杠的惯用方法是什么?


问题解答

  • 是否为有意设计?
    是,Redshift的json_extract_array_element_text等JSON提取函数的设计逻辑是保留原始JSON字符串中的转义字符。这些反斜杠是JSON语法中用于转义双引号的必要符号,函数仅负责提取JSON元素的字符串值,不会自动处理转义还原。

  • 移除反斜杠的惯用方法

方法1:全局替换反斜杠(replace())

适用于确定所有反斜杠都需要移除的场景:

select
    j, 
    replace(json_extract_array_element_text(j, 0), '\', '') as cleaned_a
from (select '["\"b\""]' as j);

执行后cleaned_a的结果为"b"。

方法2:精准替换转义双引号(regexp_replace())

如果只需要移除转义双引号的反斜杠(避免误删其他场景的反斜杠),可以用正则表达式精准匹配:

select
    j, 
    regexp_replace(json_extract_array_element_text(j, 0), '\\"', '"') as cleaned_a
from (select '["\"b\""]' as j);

这个写法会将\"替换为",结果同样为"b",兼容性更强。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:24:36