日期:2014-05-17  浏览次数:21064 次

REGEXP_LIKE的返回类型
本帖最后由 ywjcool 于 2013-03-08 17:29:23 编辑
BOOLEAN是PL/SQL中的类型,ORACLE中不支持,所以下面的语句是错误的

create function my_like(iStr in varchar2, iPattern in varchar2) return boolean
begin
  return iStr like iPattern;
end;

select 1 from dual where my_like('aaa','%a%');


但是regexp_like却可以使用,请问它是返回什么类型,为什么就能直接用呢?

select 1 from dual where regexp_like('aaa','[a-z]*')


------解决方案--------------------
引用:
引用:没有看懂楼主的意思,楼主的函数写的很是奇怪。
单独是绝对可以执行的,就是一个正则表达式。
就是说
select 1 from dual where my_like('aaa','%a%'); 
这句是错误的,其中my_like是自定义的boolean型函数
select 1 from dual where re……

我的理解是这样的,regexp_like是用正则表达式的形式来处理字符类型的数据,返回的就是字符类型的数据。
直接引用就是因为它是oracle的一个函数,并且使用的确实是处理字符串的
------解决方案--------------------
REGEXP_LIKE返回字符串