如何在oracle中仅从字符串中删除左括号和右括号?
我有这样一个字符串: (1/8in盖TBE ASME B1.20.1(NPT)外螺纹x Fem CL400铜合金B152 Gr C10400水泥衬里) 我需要这样的输出: 1/8in盖TBE ASME B1.20.1(NPT)外螺纹x Fem CL400铜合金B152 Gr C10400水泥衬里如何在oracle中仅从字符串中删除左括号和右括号?,oracle,Oracle,我有这样一个字符串: (1/8in盖TBE ASME B1.20.1(NPT)外螺纹x Fem CL400铜合金B152 Gr C10400水泥衬里) 我需要这样的输出: 1/8in盖TBE ASME B1.20.1(NPT)外螺纹x Fem CL400铜合金B152 Gr C10400水泥衬里 即只在开始和结束时不要将托架移到中间, 也 如果字符串是这样的,要么有起始括号,要么有结束括号 (1/8in盖TBE ASME B1.20.1(NPT)外螺纹x Fem CL400铜合金B152 Gr
即只在开始和结束时不要将托架移到中间,
也 如果字符串是这样的,要么有起始括号,要么有结束括号 (1/8in盖TBE ASME B1.20.1(NPT)外螺纹x Fem CL400铜合金B152 Gr C10400水泥衬里 或 1/8in盖TBE ASME B1.20.1(NPT)外螺纹x Fem CL400铜合金B152 Gr C10400水泥衬里) 然后不要拆下支架 我尝试使用regexp\u replace,但找不到解决方案。任何帮助都是值得的,因为简单的
案例
足以移除前导和结束括号
给予
或者,您可以按如下方式使用REGEXP
select
txt,
nvl(
REGEXP_SUBSTR(txt, '^\((.*)\)$', 1, 1, null, 1),
txt)
as txt_new
from txt
regexp“^\(.*)$”
强制使用前后括号,并返回-first group(regexp\u SUBSTR的第五个参数)之间的部分
如果REGEXP_SUBSTR返回noting,即表达式未包含在括号中,
NVL
返回原始值。像xxx(x(x)x)xxx这样的字符串如何?或者,如果这两个符号都是“括号”,则只需从字符串中删除第一个和最后一个符号?只需删除第一个和最后一个位置上的括号谢谢您的回复,但我需要在多个位置使用它,不会到处写案例陈述recommended@ShashankJha添加了一个regexp解决方案,但是你需要一些表达式logik来去掉括号。如果你需要最小化编码,你可以定义一个函数。
TXT NEW_TXT
-------- --------
(xxxx) xxxx
(x(x)xx) x(x)xx
(xxxx (xxxx
xxxx) xxxx)
xxxx xxxx
select
txt,
nvl(
REGEXP_SUBSTR(txt, '^\((.*)\)$', 1, 1, null, 1),
txt)
as txt_new
from txt