如何使用regexp_replace替换所有空白?

时间:2019-01-15 03:32:56

标签: sql postgresql

我想使用regexp_replace将所有空格替换为'_'。

我使用此陈述:

  

select regexp_replace('"<div_class="CCL-temp-border"><div_class="input-group_moveDivEnd"_style="margin-bottom:_5px;_top:_auto;_left:_auto;_width:_100%;_position:_relative;_opacity:_1;_filter:_none;"_data-id="moveDivEnd_1545116285310">_; <span_class="input-group-addon_CCL-te (...)"', '\s', '_', 'g')

但是结果是这样的:

  

"<div_class="CCL-temp-border"><div_class="input-group_moveDivEnd"_style="margin-bottom:_5px;_top:_auto;_left:_auto;_width:_100%;_position:_relative;_opacity:_1;_filter:_none;"_data-id="moveDivEnd_1545116285310">_;_______<span_class="input-group-addon_CCL-t (...)"

我的陈述是这样的:

  

select case when length(topiccontent)=0 THEN '_' else coalesce(regexp_replace(replace(replace(replace(topiccontent,chr(13), '_'),chr(10),'_'),' ','_'),'\s', '_', 'g'),'_') end as topiccontent from ccl_topics

您可以看到空白仍然存在,为什么?

enter image description here

1 个答案:

答案 0 :(得分:1)

我知道为什么它不能被替换。

从数据库粘贴数据时有一些字符限制。

省略的部分将转换为(...)

所以(...)不是真实字符,而是椭圆。

例如,表的一列中存在600个以上的字符,然后将其粘贴,结果带有省略号。