我有一个带有单列name_string
的表,其中包含反斜杠字符。我想使用regexp_replace
删除反斜杠字符,但是它不起作用。
表格:
create table t (name_string varchar(100));
insert into table t values ('\\"aaa\\"'), ('\\"bbb\\"');
查询:
select
name_string, regexp_replace(name_string, '\\"', '"')
from t;
返回
+--------------+----------+
| name_string | _c1 |
+--------------+----------+
| \"aaa\" | \"aaa\" |
| \"bbb\" | \"bbb\" |
+--------------+----------+
但是,select regexp_replace('\"aaa\"', '\\"', '"')
返回正确的结果。
我对为什么会这样感到困惑。有人可以说明一下吗?赞赏!
答案 0 :(得分:1)
使用4个反斜杠:
select regexp_replace(name_string,'\\\\"','"') from t;
仅反斜杠需要转义。在Java和正则表达式中,反斜杠具有特殊含义,需要转义。
答案 1 :(得分:0)
也许尝试:
select
name_string, regexp_replace(name_string, '\\\"', '"')
from t;
我认为这与转义有关-您转义了2个字符-反斜杠和双引号