sql find_in_set在oracle下的解决方案
2024-09-04 23:50:05
比如一张表:
artile (id,type,content);
type:1表示文艺类,2表示小说类,3表示传记,4表示传说,等等5,6,7,8 表数据:
id type content
1 3,1 dfasdfasdf
2 1,3,6,8 dfasdf
3 6,8,9 add
现在要找出3传记类的artile记录 mysql: select * from artile where find_in_set('3',type); oralce 语句实现:
select * from artile da where instr(','||type||',',',3,')<>0;
(原理:将1,3,6,8转为 ,1,3,6,8,然后找出 ,3,的位置
将3,1转为 ,3,1,然后找出 ,3,的位置
则<>0的即为存在,返回记录) 用自定义一个find_in_set的oracle function 来解决
create or replace function find_in_set(arg1 in varchar2,arg2 in varchar)
return number is Result number;
begin
select instr(','||arg2||',' , ','||arg1||',') into Result from dual;
return(Result);
end find_in_set;
则:select * from artile where find_in_set('3',type)<>0; mysql可接受0或其它number做为where 条件,oracle只接受表达式做为where 条件
最新文章
- ACM/ICPC 之 Floyd+记录路径后继(Hdu1385(ZOJ1456))
- 10个Web设计的SEO规则
- Tableau学习笔记之四
- The content of element type ";sqlMapConfig"; is incomplete,
- oracle 不转义 &;
- copy-on-write(写时拷贝技术)
- 持续更新visual studio 命令、快捷键(原创)
- Android----------WindowManager
- java socket 的参数选项解读(转)
- makefile文件知识点记录
- 【SqlServer】【问题收集】阻止保存要求重新创建表的更改
- Spark SQL 1.3测试
- Java装箱的 "; == "; 的问题
- linux中find命令高级用法
- CodeForces 456-C Boredom
- docker 部署 java 项目
- C#委托之我见
- springBoot 全局异常捕捉
- mozilla/rr 调试
- Python Frame
热门文章
- 记.net3.5离线安装问题
- VSphere随笔 - vCenter6.5安装配置手册
- MySQL数据库时区问题导致java程序无法连接数据库
- css设置图片的高等于图片的高
- 超強的Linux指令解釋網站《explainshell.com》,學Linux必備!
- Groovy学习:第一章 用Groovy简化Java代码
- SpringMVC学习(8):国际化
- 怎么更新 WIN10里的SMBv1协议
- Caused by: java.lang.NoClassDefFoundError: javax/validation/ParameterNameProvider
- 力扣 ——3Sum python (三数之和)实现