oracle regexp_like 与 select 模式

Posted

技术标签:

【中文标题】oracle regexp_like 与 select 模式【英文标题】:oracle regexp_like with pattern from select 【发布时间】:2013-07-05 09:32:18 【问题描述】:

我尝试使用正则表达式从表中选择行。模式是选择的结果。 我在使用 regexp_like 的选择上出现以下编译错误:

PLS-00428:此 SELECT 语句中应有一个 INTO 子句

declare 
  pattern varchar2;

begin

  select columns
  into pattern
  from table a
  where conditions;

  select * 
  from table2 
  where regexp_like(column, pattern);

end;

我不明白为什么要使用 into 子句...

【问题讨论】:

plsql 中的 SELECT 应该有一个 INTO 子句。您已经在第一条语句中使用了它。 您的语句“select * from table2 where regexp_like(column, pattern);”也应该像第一个一样有一个 INTO 子句。为什么你仍然需要这个声明?你在任何地方使用第二个选择语句的 o/p 吗? 我将使用第二个选择:update my_table set col = value where col2 in (select * from table2 where regexp_like(column, pattern)) 如果你打算使用没有INTO子句的普通sql语句,那么你可以简单地使用execute('sql statement')或execute immediate('sql statement'); table2 中只有一列? 'where col2 in (select col2..)' 应该是这样的 【参考方案1】:

最后,解决办法是:

declare

  pattern varchar2;

begin

  select columns
  into pattern
  from table a
  where conditions;


  execute immediate '
      select col2 
      from table2 
      where regexp_like(column, :pattern)
  ' using pattern;

end;

谢谢!

【讨论】:

以上是关于oracle regexp_like 与 select 模式的主要内容,如果未能解决你的问题,请参考以下文章

oracle regexp_like介绍和例子

Oracle中REGEXP_LIKE与LIKE的区别

oracle 判断字段是否为是数字等 regexp_like用法 正则表达式

正则 及 oracle 判断字段是否为是数字 regexp_like用法 正则表达式

Oracle中REGEXP_LIKE与LIKE的区别?

oracle -sql模式匹配