如何从PostgreSQL的表中删除单引号?

7

我搜索了很多,如果有人能够给我提供解决方案或者回答我的问题那就太好了。 问题是我有一个包含大量单引号的postgresql表格,我无法弄清楚如何去掉它们,因为这显然会

  update tablename set fieldname= NULL where fieldname=' ; 

无法工作。

3个回答

31
最好使用replace()来完成这个任务:
UPDATE tbl SET col = replace(col, '''', '');

regexp_replace()快得多,而且它可以全局替换:替换所有搜索字符串的出现。要使用regexp_replace()实现相同的效果,需要添加一个可选的第四个参数:
UPDATE tbl SET col = regexp_replace(col, '''', '', 'g');

'g' 代表 "全球性"。

顺便说一下,规范的(以及 SQL 标准的)方法来转义字符串字面量中的单引号(')是将其加倍('')。当然,也可以使用 Posix 风格的转义序列。请参见:


把双引号替换成单引号怎么样? - Timothy
@Timothy: replace(col, '"', '''') @Timothy:replace(col,'"','''') - Erwin Brandstetter

2
update tablename set fieldname= NULL where fieldname='''' ;

或者

update tablename set fieldname= NULL where fieldname=E'\'' ;

两个都不起作用,不知道我是否漏掉了什么。 - seeker
1
可能值中有空格。尝试使用 SELECT '*' || fieldname || '*' FROM tablename 进行检查。 - DavidEG

0

插入到table1表(data)的值为($$这是一个字符串,里面包含了一些单引号$$)

在字符串前后使用$$。它将插入数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接