ORACLE将分隔数据转换为多值IN列表
来源:互联网 发布:惠普打印机驱动for mac 编辑:程序博客网 时间:2024/04/20 13:37
看看下面的语句
select ename,sal,deptno
from emp
where empno in('7654,7698,7782,7788')
这个语句是错误的,因为DEPTNO是一个数值列,而此IN列表是一个字符串值,所以此SQL语句会失败。现在要将此字符串转换为用逗号分解的数值列表。使用如下语句可以达到目的。
select ename,sal,deptno
from emp
where empno in (
select
to_number(
rtrim(
substr(csv.emps,instr(csv.emps,',',1,pos)+1,instr(csv.emps,',',1,pos+1)-instr(csv.emps,',',1,pos))
,',')
)
from
(select ','||'7654,7698,7782,7788'||',' emps from t1) csv,
(select rownum pos from emp) iter
where iter.pos<=(length(csv.emps)-length(replace(csv.emps,',')))/length(',')-1
)
下面贴出来一些部分过程的结果,便于理解。
SQL> select emps,pos
2 from
3 (select ','||'7654,7698,7782,7788'||',' emps from t1) csv,
4 (select rownum pos from emp) iter
5 where iter.pos<=(length(csv.emps)-length(replace(csv.emps,',')))/length(','
)-1;
EMPS POS
--------------------- ----------
,7654,7698,7782,7788, 1
,7654,7698,7782,7788, 2
,7654,7698,7782,7788, 3
,7654,7698,7782,7788, 4
SQL> select ename,sal,deptno
2 from emp
3 where empno in (
4 select
5 to_number(
6 rtrim(
7 substr(csv.emps,instr(csv.emps,',',1,pos)+1,instr(csv.emps,',',1,pos+1)-instr(csv.emps,',',1,pos))
8 ,',')
9 )
10 from
11 (select ','||'7654,7698,7782,7788'||',' emps from t1) csv,
12 (select rownum pos from emp) iter
13 where iter.pos<=(length(csv.emps)-length(replace(csv.emps,',')))/length(',')-1
14 );
ENAME SAL DEPTNO
---------- ---------- ----------
CLARK 2450 10
BLAKE 2850 30
MARTIN 1250 30
SCOTT 3000 20
- ORACLE将分隔数据转换为多值IN列表
- 将指定分隔符分隔的字符串转换为字符串列表
- Oracle将以逗号分隔的数字字符串根据字典表转换为中文字符串
- sql将列转换为以逗号分隔的字符串
- 将逗号分隔的字符串转换为List
- 将逗号分隔的字符串转换为List以及List转逗号分隔的字符串
- 快速分解字符串到列表 将字符串列表转换成用分隔符分隔的字符串 的函数,超快。
- 在.net 中 将线性结构数据列表转换为 XML 格式的层次结构
- Pandas将列表(List)转换为数据框(Dataframe)
- 将列表数据导出为Excel文件
- oracle 将字符串分隔方法
- Oracle将字符串转换为数字
- Oracle将字符串转换为数字
- 将Datatable数据转换为HTML方法
- 将Datatable数据转换为HTML方法 .
- 将List 集合 转换为Jsion 数据
- 将DataGridViewRows转换为DataTable数据
- c# 将DataGridViewRows转换为DataTable数据
- 一个计算机专业在读研究生的迷茫(转)
- glPushMatrix()和glPopMatrix()以及glLoadIdentity()的理解
- asp.net编程中常用的33段代码
- 这几天的学习
- 转一篇介绍开发嵌入式经验的文章,写得不错,比较中肯,适合一看。
- ORACLE将分隔数据转换为多值IN列表
- 将两位十进制的书转换成八位纯二进制数
- asp.net 页面传值
- 1206 ListOnlineRecourse函数的主干
- Windows程序设计——Windows操作系统发展简史
- 屏幕增强
- Chain Of Responsibility 职责链模式
- SQL Server 安装问题
- 点击按钮时弹出另一个能控制大小的页面,并将某些值通过POST方式传给这个弹出的窗口