【发布时间】:2011-10-13 04:43:11
【问题描述】:
我在 oracle 论坛网站上找到了一个示例:
输入字符串:a, b, c (x, y, z), a, (xx, yy, zz), x,
WITH t AS (SELECT 'a, b, c (x, y, z), a, (xx, yy, zz), x,' col1
FROM dual)
SELECT t.col1
, REGEXP_REPLACE(t.col1, '(\(.*?\))|,', '\1') new_col
FROM t
输出:a b c (x, y, z) a (xx, yy, zz) x
但我想反其道而行之。只需从() 内部删除此字符, 并留在外部。
输出:a, b, c (x y z), a, (xx yy zz), x,
【问题讨论】:
-
您希望
()之间有多少个,? -
REGEXP_REPLACE 在 Oracle 中使用没有环视功能的风味 POSIX ERE。此信息取自here
-
添加到@bw_üezi 的评论 - 我已经确认 Oracle 不支持使用
REGEXP_REPLACE的外观。 强制注释:它看起来不像数据库中应该是原始的数据 - 特别是如果您要查询它。你确定你不能正常化它吗? (我知道你现在可能不能......)
标签: sql regex oracle character