Java IBM DB2自定义函数语法
我有一个自定义正则表达式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
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位。