转义制表符 PostgreSQL
Posted
技术标签:
【中文标题】转义制表符 PostgreSQL【英文标题】:Escape tab character PostgreSQL 【发布时间】:2015-04-28 07:29:20 【问题描述】:我有一个 varchar 字段,我正在将此字段迁移到 JSON 类型字段。一些数据有制表符,当尝试插入新的 JSON 字段时,它告诉我这个错误:DETAIL: Character with value 0x09 must be escape.
我正在尝试像这样转义和删除制表符,但没有成功:
v_text:=REPLACE(text, '\x09', '');
或
v_text:=REPLACE(text, '0x09', '');
如何删除文本中的所有制表符? 谢谢
【问题讨论】:
【参考方案1】:您可以尝试使用正则表达式:
select regexp_replace(text, '\t', '', 'g');
【讨论】:
它仍然在告诉我:DETAIL: Character with value 0x09 must be escaped. @Za7pi 你能提供你试图操纵的文本值吗(或者至少是其中有问题的部分)? 我要在开头和结尾加单引号:'xxxx xxxx x x x' 最后一试,最后一个a不在文中:'xxxx xxxx x x x a' 如果我在此处编辑此文本,我可以看到空格或制表符,但您看不到它【参考方案2】:只需将制表符按原样放在replace
中(SO 格式将制表符替换为空格,因此只需将制表符插入到它显示[tab]
的位置):
SELECT replace('"a[tab]"', '[tab]', '')::json;
【讨论】:
它不工作。我正在这样做: v_text:=REPLACE(text, '[tab]', '');其中 text 是一个 varchar 字段 @Za7pi 无法重现您的错误。v json:=REPLACE('"a "'::varchar, ' ', '');
为我工作。
仍然错误:细节:必须转义值为 0x09 的字符以上是关于转义制表符 PostgreSQL的主要内容,如果未能解决你的问题,请参考以下文章