oracle:与mysql相似得find_set_in函数用法
2017-04-14 10:18
555 查看
Oracle中实现find_in_set
CREATEORREPLACEFUNCTION FIND_IN_SET(piv_str1 varchar2, piv_str2 varchar2, p_sep varchar2 :=',') RETURNNUMBERIS l_idx number:=0; -- 用于计算piv_str2中分隔符的位置 strvarchar2(500); -- 根据分隔符截取的子字符串 piv_str varchar2(500) := piv_str2; -- 将piv_str2赋值给piv_str res number:=0; -- 返回结果 loopIndex number:=0; BEGIN-- 如果piv_str中没有分割符,直接判断piv_str1和piv_str是否相等,相等 res=1 IF instr(piv_str, p_sep, 1) =0THENIF piv_str = piv_str1 THEN res:=1; ENDIF; ELSE-- 循环按分隔符截取piv_str LOOP l_idx := instr(piv_str,p_sep); loopIndex:=loopIndex+1; -- 当piv_str中还有分隔符时 IF l_idx >0THEN-- 截取第一个分隔符前的字段str str:= substr(piv_str,1,l_idx-1); -- 判断 str 和piv_str1 是否相等,相等 res=1 并结束循环判断 IFstr= piv_str1 THEN res:= loopIndex; EXIT; ENDIF; piv_str := substr(piv_str,l_idx+length(p_sep)); ELSE-- 当截取后的piv_str 中不存在分割符时,判断piv_str和piv_str1是否相等,相等 res=1 IF piv_str = piv_str1 THEN res:= loopIndex; ENDIF; -- 无论最后是否相等,都跳出循环 EXIT; ENDIF; END LOOP; -- 结束循环 ENDIF; -- 返回res RETURN res; END FIND_IN_SET;
创建自定义函数时:检查函数是否存在:
SELECT * FROM USER_OBJECTS WHERE 'TYPE'='FUNCTON' AND OBJECT_NAME='find_set_in';
需要授权给用户,创建函数的权限
相关文章推荐
- mysql中find_in_set()函数的使用及in()用法详解
- mysql find_in_set 用法
- mysql中FIND_IN_SET()用法以及与in()的区别
- mysql中对order by的函数substring_index() , find_in_set()使用
- mysql 函数 find in set()
- mysql 自定义函数declare group_concat()、find_in_set()
- Mysql字符串函数FIND_IN_SET()的两点用法
- MySQL 的 find_in_set 函数使用方法
- mysql中find_in_set()函数的使用
- Msql 函数find_in_set()用法
- mysql find_in_set的用法
- mysql FIND_IN_SET 用法
- MySQL中的find_in_set(A, B)函数,判断字符串A是否存在B中
- MySql的FIND_IN_SET()查询函数的使用
- mysql中查找字符串函数FIND_IN_SET用法
- mysql 多值检索 find_in_set()函数
- mysql中 find_in_set()函数的使用
- mysql 中find_in_set()和in()用法比较
- mysql 实现按 where in () 中的顺序排序,用find_in_set() 函数
- mysql 中find_in_set()和in()用法比较