2011-12-21 131 views
2

我周围搜索了很多,如果有人可以将我链接到解决方案或回答我的查询,那将是非常棒的。 的事情是我有一个包含很多单引号的,我无法弄清楚如何摆脱他们的PostgreSQL表,因为显然这如何从postgresql中的表中删除单引号?

update tablename set fieldname= NULL where fieldname=' ; 

不会工作。

回答

14

为了这个美好的使用replace()

UPDATE tbl SET col = replace(col, '''', ''); 

regexp_replace()更快速,它取代了 “全局” - 搜索字符串的所有地方。以前接受的answer by @beny23在这方面是错误的。它取代只有第一出现,必须是:

UPDATE tbl SET col = regexp_replace(col, '''', '', 'g'); 

注意附加参数'g'globally。阅读关于string functions in the manual

旁白:规范(和SQL标准)的方式在字符串逃逸单引号')是它们的两倍('')。当然,使用Posix样式转义序列也是有效的。详细信息:

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

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

他们都没有工作,不知道如果我在想念的东西在这里。 – KodeSeeker 2011-12-21 12:12:09

+1

也许值中有空格。尝试'SELECT'*'|| fieldname || '*'FROM tablename'来检查它。 – DavidEG 2011-12-21 12:43:13

+0

试图显示“*'*”形式的结果 – KodeSeeker 2011-12-22 05:42:54