SubStr(abcdrfg/sdas/ghg,3,CASE WHEN INSTR(abcdrfg/sdas/ghg,’/’,3,1) = 0 THEN 10 ELSE (instr(abcdrfg/sdas/ghg,’/’,3,1)-1) END)
这次的嵌套函数可以让我们从“abcdrfg/sdas/ghg”字段中提取“指定字符”前边或后边的字符,并通过条件判断是否含有该字符,从而返回我们需要的值。
公式解析:
SubStr(cExpression,nStartPosition ,[nCharactersReturned])
● cExpression指定要从其中返回字符串的字符表达式或备注字段;
● nStartPosition用于指定返回的字符串在字符表达式或备注字段中的位置
● nCharactersReturned用于指定返回的字符数目,缺省时返回字符表达式的值结束前的全部字符。
例:
SELECT SubStr(syranmo,3 ,2) FROM dual; – 返回 ra
表示从“syranmo”字段第3字符开始提取2字符。
注:其中“syranmo”字段可以为sql表“列名”。
instr( string1, string2, start_position,nth_appearance )
● string1:源字符串,要在此字符串中查找。
● string2:要在string1中查找的字符串 。
● start_position:代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。
● nth_appearance:代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。
位置索引号从1开始,如果String2在String1中没有找到,instr函数返回 “ 0 ”。
例:
SELECT instr(‘syranmo’,‘s’) FROM dual; – 返回 1
SEL