我搜索了很多,如果有人可以将我链接到解决方案或回答我的查询,那将会很棒。 问题是我有一个包含大量单引号的postgresql表,我无法弄清楚如何摆脱它们,因为显然这个
update tablename set fieldname= NULL where fieldname=' ;
不会工作。
答案 0 :(得分:15)
最好使用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 :(得分:1)
update tablename set fieldname= NULL where fieldname='''' ;
或
update tablename set fieldname= NULL where fieldname=E'\'' ;
答案 2 :(得分:0)
insert into table1(data) values ($$it's a string, it's got some single quotes$$)
在字符串前后使用 $$。它将插入数据。