Java IBM DB2自定义函数语法

Java IBM DB2自定义函数语法,java,function,db2,Java,Function,Db2,我有一个自定义正则表达式DB2函数,如下所示:- CREATE OR REPLACE FUNCTION REGEXP_LIKE(SOURCE VARCHAR(3000), REGEX VARCHAR(512), MODE VARCHAR(3)) RETURNS INTEGER FENCED NOT DETERMINISTIC NO SQL LANGUAGE JAVA PARAMETER STYLE JAVA EXTERNAL NAME 'db2_regex:com.ibm.avalanch

我有一个自定义正则表达式DB2函数,如下所示:-

CREATE OR REPLACE FUNCTION REGEXP_LIKE(SOURCE VARCHAR(3000), REGEX VARCHAR(512), 
MODE VARCHAR(3))

RETURNS INTEGER
FENCED 
NOT DETERMINISTIC
NO SQL
LANGUAGE JAVA
PARAMETER STYLE JAVA
EXTERNAL NAME 'db2_regex:com.ibm.avalanche.udf.regex.Regexp.regexpLike'
NO EXTERNAL ACTION
@
select ID from TABLE where 
REGEXP_LIKE(STRING, 'regex', 'i') > 0
select ID from TABLE where 
REGEXP_LIKE(STRING, 'regex', 'i')
这摘自下面的文章(http://www.ibm.com/developerworks/data/library/techarticle/dm-1011db2luwpatternmatch/index.html?ca=drs-)

此功能可按如下方式使用:-

CREATE OR REPLACE FUNCTION REGEXP_LIKE(SOURCE VARCHAR(3000), REGEX VARCHAR(512), 
MODE VARCHAR(3))

RETURNS INTEGER
FENCED 
NOT DETERMINISTIC
NO SQL
LANGUAGE JAVA
PARAMETER STYLE JAVA
EXTERNAL NAME 'db2_regex:com.ibm.avalanche.udf.regex.Regexp.regexpLike'
NO EXTERNAL ACTION
@
select ID from TABLE where 
REGEXP_LIKE(STRING, 'regex', 'i') > 0
select ID from TABLE where 
REGEXP_LIKE(STRING, 'regex', 'i')
oracle版本如下:-

CREATE OR REPLACE FUNCTION REGEXP_LIKE(SOURCE VARCHAR(3000), REGEX VARCHAR(512), 
MODE VARCHAR(3))

RETURNS INTEGER
FENCED 
NOT DETERMINISTIC
NO SQL
LANGUAGE JAVA
PARAMETER STYLE JAVA
EXTERNAL NAME 'db2_regex:com.ibm.avalanche.udf.regex.Regexp.regexpLike'
NO EXTERNAL ACTION
@
select ID from TABLE where 
REGEXP_LIKE(STRING, 'regex', 'i') > 0
select ID from TABLE where 
REGEXP_LIKE(STRING, 'regex', 'i')
请注意,它不需要大于零(>0)的值

我的问题是:-我能在前面的DB2函数中实现这种Oracle语法吗。我认为mybe的关键是“返回整数”


我已经尝试了一些不同的方法,非常感谢您的帮助。

DB29.7forLinux、UNIX和Windows仅支持PL/SQL代码模块内部的布尔数据类型,这些模块在启用Oracle兼容向量的DB2数据库中运行


因此,您将无法定义返回布尔类型的UDF,也无法指定检查布尔值的SQL谓词(除了内置的布尔表达式,如EXISTS、IS NULL等)。

您尝试了什么?尝试发布您的解决方案,我们可以看到我们可以提供帮助。我刚刚尝试更改退货类型。我不确定这是否可以在sql上的WHERE语句中实现,因为必须始终有一个返回类型。如果返回类型是布尔值,则可能不需要>0位。