如何用两个单引号字符替换一个单引号字符

时间:2019-01-07 09:30:48

标签: postgresql replace

我想用一个字符串中的两个单引号(')替换一个字符串引号('')的所有实例。

假设e'QmfgLu/]sf]/sd是一个字符串,我想将'替换为''

结果必须为e''OmfgLu/]

我尝试了以下查询:

update customer set name=REGEXP_REPLACE(name, E'\'', '''');

 update customer set name=REPLACE(name, E'\'', '''');

此查询无法正常工作。编写查询的合适方式是什么?

2 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式用2个引号代替单引号。

update customer set name=REGEXP_REPLACE(name, $$([^'])'([^'])$$, $$\1''\2$$ ,'g');

$$([^'])'([^'])$$-表示除单引号,引号和非引号字符之外的任何字符的序列。

我正在使用dollar quoting以避免混淆引号。

Demo

编辑

@edruid指出,要处理字符串开头和结尾的引号大小写,请使用:  REGEXP_REPLACE(name, $$([^']|^)'(?!')$$, $$\1''$$ ,'g')

这使用negative lookahead来匹配单引号-(?!')

Demo2

答案 1 :(得分:0)

在postgres中,在字符串中使用单引号的方式是键入”(用作转义符),因此您的替换将是

transform-origin: 0% 0%;

(如果只想替换第一个',则跳过最后一个'g')

或不使用正则表达式:

<html>
<body>
<!--The content below is only a placeholder and can be replaced.-->
<div style="width: 1000px; height: 800px; position: absolute; top: 100px">
  <div style="position: absolute; right: 16px; z-index: 2;">
    <!---something else--->
  </div>
  <!--- this is the scrollable outer div --->
  <div
    style="width:3000px; background-color:red; height: 2000px; z-index: 1; overflow: auto;"
  >
    <!--- I am trying to zoom this div in/out --->
    <!--- sadly I cannot align it within the outer div --->
    <div
    style="position: absolute; transform: scale(1.2); background-color: black; width: 500px; height: 400px;  transform-origin: 0% 0%;"
    ></div>
  </div>
</div>
</body>
</html>