2011-03-30 50 views
0

我有一個自定義的正則表達式DB2功能如下: -IBM 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 
@ 

這是從下面的文章取(http://www.ibm.com/developerworks/data/library/ techarticle/DM-1011db2luwpatternmatch/index.html中CA = DRS-)

如下此功能可用於: -

select ID from TABLE where 
REGEXP_LIKE(STRING, 'regex', 'i') > 0 

Oracle的版本如下: -

select ID from TABLE where 
REGEXP_LIKE(STRING, 'regex', 'i') 

請注意,它不要求大於零(> 0)。

我的問題是: - 我可以在以前的DB2函數中實現這個Oracle語法。我認爲關鍵的mybe是「RETURNS INTEGER」?

我試過幾個不同的東西,任何幫助將不勝感激。

+0

你有什麼試過?嘗試發佈您的解決方案,我們可以看到我們可以提供幫助。 – 2011-03-30 18:18:24

+0

我只是試着改變返回類型。我不確定這是否可以在SQL的WHERE語句中實現,因爲必須始終有一個返回類型。如果返回類型是一個布爾值,那麼你可能不需要 > 0 位。 – user684456 2011-03-31 09:08:18

回答

0

用於Linux,UNIX和Windows DB2 9.7僅支持了在啓用了甲骨文兼容性矢量創建的DB2數據庫運行PL/SQL代碼模塊內的布爾數據類型。

因此,您將無法定義返回布爾類型的UDF,也無法指定用於檢查布爾值的SQL謂詞(除了內置布爾表達式,如EXISTS,IS NULL等)。