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中编写相同的逻辑,我该怎么做?
答案 0 :(得分:0)
INSTR(string, substring [, position [, occurrence] ] )
INSTR
功能搜索string
substring
。 [...]如果找到等于substring
的子字符串,则该函数返回一个整数,指示该子字符串的第一个字符的位置。如果没有找到这样的子字符串,则该函数返回零。
position
是一个非零整数,表示Oracle数据库开始搜索的string
字符,即与substring
进行比较的第一个子字符串的第一个字符的位置。如果position
为负数,则Oracle会从string
的末尾开始向后计数,然后从结果位置向后搜索。
occurrence
是一个整数,表示Oraclesubstring
中string
应该搜索的occurrence
。occurrence
的值必须为正数。如果string
大于1,则数据库不会在第一个匹配项上返回,但会继续比较occurrence
的连续子字符串,如上所述,直到找到匹配号INSTR
。< / p>
将其与:
进行比较 String.indexOf(String str, int fromIndex)
从指定的索引处开始返回指定子字符串第一次出现的索引,如果没有这种情况,则返回-1。
String.lastIndexOf(String str, int fromIndex)
返回指定子字符串最后一次出现的索引,从指定的索引向后搜索,如果没有这种情况,则返回-1。
因此,由于您的代码不使用第4个参数,而第3个参数为负数,因此lastIndexOf
和library("tidyverse")
dt0 <- tibble(x=1:10, y=11:20)
filter(dt0, 1==x) # Returns the first row
purrr::contains(list(1), 1) # TRUE
filter(dt0, purrr::contains(list(1), x)) # Returns NO rows
大致相同
请记住,Java索引是基于0的,Oracle的位置是从1开始的。