Oracle FIND_IN_SET函数的使用教程
mysql 中find_set_in函数参考:https://blog.csdn.net/weixin_43564627/article/details/94463694
创建自定义函数
因为find_set_in是mysql中的函数,所以在Oracle中实现find_in_set
CREATE OR REPLACE FUNCTION FIND_IN_SET(piv_str1 varchar2, piv_str2 varchar2, p_sep varchar2 := ',')RETURN NUMBER IS l_idx number:=0; -- 用于计算piv_str2中分隔符的位置 str varchar2(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) = 0 THEN IF piv_str = piv_str1 THEN res:= 1; END IF; ELSE -- 循环按分隔符截取piv_str LOOP l_idx := instr(piv_str,p_sep); loopIndex:=loopIndex+1;-- 当piv_str中还有分隔符时 IF l_idx > 0 THEN -- 截取第一个分隔符前的字段str str:= substr(piv_str,1,l_idx-1); -- 判断 str 和piv_str1 是否相等,相等 res=1 并结束循环判断 IF str = piv_str1 THEN res:= loopIndex; EXIT; END IF; 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; END IF; -- 无论最后是否相等,都跳出循环 EXIT; END IF; END LOOP; -- 结束循环 END IF; -- 返回res RETURN res; END FIND_IN_SET;
创建自定义函数时:检查函数是否存在:
SELECT * FROM USER_OBJECTS WHERE ‘TYPE’=‘FUNCTON’ AND OBJECT_NAME=‘find_set_in’;
需要授权给用户,创建函数的权限
使用
select t.* from TABLE_T t where find_in_set('8', t.ids) > 0
注意:这后面有个>0 判断 不要漏掉
Oracle FIND_IN_SET函数的使用教程相关推荐
- Oracle FIND_IN_SET函数
需求 oracle某字段存放的是逗号分隔的id字符串. 现在需要通过id来筛选,且id可以多选 与逻辑. 比如:id字符串为1,2,3,4,5 搜索条件为1,3 思路 mysql 有 find ...
- Oracle FIND_IN_SET函数
最近笔者遇到一个需求.在数据库中有下方表格所示类型的一个列,每个值都是由ID拼接的字符串,用户希望能针对这个列做到数据检索,要求数据值只要包含传入值,即视为满足检索条件. 笔者的第一反应就是:简单!! ...
- MySQL中 find_in_set 函数如何替换成Oracle写法
下面sql语句是MySQL写法 select count(*) from sys_dept where status = 0 and del_flag = '0' and find_in_set(#{ ...
- Oracle 字符串函数
Oracle Ascii()函数 在Oracle中,Ascii()函数可以返回代表指定字符的数字值代码,那么Ascii()函数具体该如何实用呢? Ascii()函数语法 ASCII( single_c ...
- MySQL find_in_set()函数
转载自 MySQL find_in_set()函数 MySQL FIND_IN_SET函数简介 MySQL提供了一个名为FIND_IN_SET()的内置字符串函数,允许您在逗号分隔的字符串列表中查找 ...
- oracle 时间集合,oracle 日期函数集合(集中版本)第2/2页
oracle 日期函数集合(集中版本)第2/2页 更新时间:2009年06月16日 23:45:55 作者: oracle 日期函数网上已经有了不少,特我们跟集中一下,免得大家麻烦. 一. 常用日 ...
- Oracle count函数原理,oracle count函数
用来返回查询的行数. 当指定distinct时,不能接order_by_clause: 如果指定表达式,count返回表达式不为空的值: 当指定*号时,它返回所有行,含重复行和空值.count从不返回 ...
- Oracle PL/SQL语言初级教程(自学)
Oracle PL/SQL语言初级教程 PL/SQL 语言基础 PL/SQL 是一种高性能的基于事务处理的语言,能运行在任何 ORACLE 环境中,支持所有数据处理命令. 通过使用 PL/SQL 程序 ...
- Oracle数据库:条件表达式case when then else end,decode函数,oracle单行函数练习示例
Oracle数据库:条件表达式case when then else end,decode函数,oracle单行函数练习示例 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很 ...
最新文章
- mysql server id为0_MySQL内核月报 2014.12-MySQL· 答疑释惑·server_id为0的Rotate-阿里云开发者社区...
- 固态硬盘市场或将提前爆发
- Matlab实用程序--图形应用-变换的傅立叶函数曲线
- 跨入安全的殿堂--读《Web入侵安全测试与对策》感悟
- birt报表表格边框_Python 快速设置 Excel 表格边框
- ROCKOUT软件测试工程师,具透丨这才是让 iMessage 变得好玩有用的原因:iMessage App Store 详解...
- 关于CMMI和PMBOK之间的关系和区别比较
- 项目里面遇到的问题和解决方案的记录
- 高中信息技术——Access数据库刷题点整理
- edge chrome Android,微软Edge浏览器正式登陆Android平台
- python整理表格数据_python --整理数据结构(列表)
- 内存监控设置及数据获取方案
- Python+tkinter动态显示与隐藏窗口上的组件
- 想用好低代码这把“双刃剑”,先搞清楚这三个问题|低代码系列(四)
- Scrum: 时间框 (Timeboxing) 是什么?
- php 排它性,排他性
- jetbrains(IDEA/PyCharm)官网地址打不开
- 微信朋友圈广告投放审核服务器,微信朋友圈广告位投放文案审核规范
- NoSQL学习笔记之MongoDB-01初识NoSQL
- 到底应该怎么去学习seo?