PG数据库插入数据,正则字段的反斜杠丢了

问题描述

将公司数据发现场,导入后发现正则的\"丢"了。其实,是当成转义符了。但是根据下面PG官网提示自PostgreSQL9.1开始默认值就是on,现场肯定是有人主动off了。太坑了~~~

standard_conforming_strings=on,\失去了转义,即''中的字符串保持不变(该是啥是啥)
standard_conforming_strings=off时,\会保留转义的含义,'\'即为''
在Unicode转义语法中,反斜杠后的任何其他字符均按字面意义使用。因此,要包含反斜杠字符,请写两个反斜杠(\\)。

如果standard_conforming_strings是off,则反斜杠是字符串文本中的转义字符也可以使用E‘字符’。

实验验证 

postgres=# show standard_conforming_strings;
 standard_conforming_strings
-----------------------------
 on
(1 row)

postgres=# select '\';
 ?column?
----------
 \
(1 row)

postgres=# select '\\';
 ?column?
----------
 \\
(1 row)

postgres=# set standard_conforming_strings=off;
SET
postgres=# show standard_conforming_strings;
 standard_conforming_strings
-----------------------------
 off
(1 row)

postgres=# select '\\';
WARNING:  nonstandard use of \\ in a string literal
LINE 1: select '\\';
               ^
HINT:  Use the escape string syntax for backslashes, e.g., E'\\'.
 ?column? 
----------
 \
(1 row)

postgres=# postgres=# select '\';
postgres'#
postgres'# ;
postgres'# ^C
postgres=# select E'\\';
 ?column?
----------
 \
(1 row)

postgres=# select E'\';
postgres'# ;
postgres'# ;
postgres'# ^C

问题处理

1、执行set standard_conforming_strings=on;(只对当前会话有效);

2、再执行插入数据动作即可。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值