2017-06-08 110 views
-1
if instr(lv_my_name, ' ', -2) != length(lv_my_name) - 2 or length(lv_my_name) = 2 then 
    lv_my_name:= lv_my_name; 
else 
    lv_my_name:= trim(substr(lv_my_name, 0, length(lv_my_name)-1)); 
end if; 

如果我要在Java中編寫相同的邏輯,我該怎麼做?如何在java中使用oracle instr函數

回答

0

INSTR(string, substring [, position [, occurrence] ])

INSTR功能搜索stringsubstring。 [...]如果找到等於substring的子字符串,則該函數將返回一個整數,指示該子字符串的第一個字符的位置。如果沒有找到這樣的子字符串,那麼該函數返回零。

position是一個非零整數,表示Oracle數據庫開始搜索時的字符string - 即第一個子字符串的第一個字符的位置與substring進行比較。如果position爲負值,則Oracle從string末尾開始倒數,然後從結果位置向後搜索。

occurrence是一個整數,指示在string中應該搜索哪一個substringoccurrence的值必須是正值。如果occurrence大於1,則數據庫在第一次匹配時不返回,但繼續比較string的連續子字符串,如上所述,直到找到匹配號occurrence

與此相比,:

String.indexOf(String str, int fromIndex)

返回指定字符串的第一個出現的索引,開始指定索引處,或-1,如果不存在這樣的發生。

String.lastIndexOf(String str, int fromIndex)

返回指定字符串的最後一個出現的索引,從指定的索引向後搜索,或-1,如果不存在這樣的發生。

所以,既然你的代碼不使用第四個參數,而第三個參數是負的,INSTRlastIndexOf大多是相當於

記住,Java的索引都是0,和Oracle位置是1根據。