【问题标题】:Error: ORA-00907: missing right parenthesis - can you help figure out issue错误:ORA-00907:缺少右括号 - 你能帮忙找出问题吗
【发布时间】:2020-08-24 21:39:17
【问题描述】:
select regexp_substr((replace(replace(replace(('CA','CO','IL','KS'),chr(40)),chr(41)), chr(39))), '[^,]+', 1, level) as division from dual
                                   connect by level <= regexp_count(('CA','CO','IL','KS'), '[,]') + 1;  

错误: ORA-00907: 缺少右括号 00907. 00000 - “缺少右括号”

你能帮我弄清楚为什么会出错。

编辑 - 我无法操纵字符串以在其中包含额外的引号。这是我从表格中获得的固定格式。如何剥离它以获得行格式输出?

【问题讨论】:

  • 你想做什么?正则表达式函数将字符串作为输入,而不是您在此处尝试的列表。
  • 嗨@GMB,我将从循环中的动态变量中获取此静态输出('CA'、'CO'、'IL'、'KS')。我想剥离它以获取行格式的所有值。我该怎么做?
  • 那么我认为 Barbaros Özhan 的回答符合您的要求。
  • 我无法更改字符串以获得额外的引号。我会在我的问题中得到这个字符串。我的任务是剥离它以获得行。我该怎么做?
  • @user:5841306 你能帮忙吗?

标签: sql oracle


【解决方案1】:

您有一个引用问题(在为每个单引号添加额外引号后引用整个术语 ('CA','CO','IL','KS')),不如试试这个:

 SELECT regexp_substr((replace(replace(replace('(''CA'',''CO'',''IL'',''KS'')',
                      chr(40)),
                      chr(41)), 
                      chr(39))), '[^,]+', 1, level) AS division 
   FROM dual
CONNECT BY level <= regexp_count('(''CA'',''CO'',''IL'',''KS'')', ',') + 1;

DIVISION
--------
CA
CO
IL
KS

Demo

【讨论】:

  • 谢谢@Barbaros。我得到的 ('CA','CO','IL','KS') 输出是固定的。这是我从循环中的动态变量中得到的。我想以行格式剥离值。我该怎么做?
  • 如果我的字符串是固定的('CA'、'CO'、'IL'、'KS')并且我无法操纵它来获得额外的引号,我该如何让它工作。此字符串是表中的存储值,格式相同。
猜你喜欢
  • 2013-05-09
  • 2016-10-23
  • 2015-03-31
  • 1970-01-01
  • 2013-05-12
  • 2014-03-25
  • 2018-05-22
相关资源
最近更新 更多