【发布时间】:2011-12-21 08:53:05
【问题描述】:
我搜索了很多,如果有人可以将我链接到解决方案或回答我的问题,那就太好了。 问题是我有一个包含很多单引号的 postgresql 表,我不知道如何摆脱它们,因为显然这个
update tablename set fieldname= NULL where fieldname=' ;
不会工作。
【问题讨论】:
标签: sql database postgresql
我搜索了很多,如果有人可以将我链接到解决方案或回答我的问题,那就太好了。 问题是我有一个包含很多单引号的 postgresql 表,我不知道如何摆脱它们,因为显然这个
update tablename set fieldname= NULL where fieldname=' ;
不会工作。
【问题讨论】:
标签: sql database postgresql
最好使用replace():
UPDATE tbl SET col = replace(col, '''', '');
比regexp_replace() 快得多,它替换了“全局”——所有出现的搜索字符串。之前接受的answer by @beny23 在这方面是错误的。它只替换了第一次出现,必须是:
UPDATE tbl SET col = regexp_replace(col, '''', '', 'g');
注意“全局”的附加参数'g'。阅读string functions in the manual。
另外:在字符串文字中转义单引号 (') 的规范(和SQL 标准)方法是将它们加倍('')。当然,使用 Posix 风格的转义序列也可以。详情:
【讨论】:
replace(col, '"', '''')
update tablename set fieldname= NULL where fieldname='''' ;
或
update tablename set fieldname= NULL where fieldname=E'\'' ;
【讨论】:
SELECT '*' || fieldname || '*' FROM tablename看看吧。
insert into table1(data) values ($$it's a string, it's got some single quotes$$)
在字符串前后使用 $$。它将插入数据。
【讨论】: