oracle 如何把同一个表的同一个字段按条件分成不同的字段查询出来结果集?例如:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 如何把同一个表的同一个字段按条件分成不同的字段查询出来结果集?例如:相关的知识,希望对你有一定的参考价值。

TAB_A表中列为:A,B,C
查询出结果集为A,B,C,D四个列
当C = 1时,B 的值在结果集B列中。
当C = 2 时,B的值在结果集的C列中。
要效率高点的。

参考技术A select a,decode(c,1,b,null)b,decode(c,2,b,null)c from tab_a
不知道d是啥
没测试,仅供参考本回答被提问者和网友采纳

oracle 数据库 怎么把一个表中的一个字段按规律拆分,并显示出来

oracle 数据库有一个表
ID 名字
1 张三_北京
2 李四_上海
有没有什么函数,可以在数据库把名字那个以-分割 展示出来是
1 张三 北京
就是要求用SQL的,前几天下载资料分用完了。。实在是没有了。。那个大神帮忙出手一下。。谢了

1、首先需要sys或system权限操作

2、查询需要更改表的ID

select object_id  from all_objects where owner = 'ITHOME'
and object_name = 'TEST';1234

注:ITHOME为用户,TEST是要更改的表,表名要大写

3、通过ID查出该表所有字段的顺序

select obj#, col#, name
from sys.col$
where obj# = '103756' order by col#123

4、修改顺序

update sys.col$ set col#=2 where obj#=103756 and name='AGE';update sys.col$ set col#=3 where obj#=103756 and name='NAME';12

或直接在第三步的语句后面加 for update 进行修改

最后commit提交 并且重启Oracle服务

参考技术A oracle 数据库拆分字段的实现方法:
用正则表达式拆分某一个字段,比如有a,b,c,d,e

sql写法如下:
select regexp_substr('a,b,c,d,e,','[^,]+',1,rownum)
from dual connect by rownum<=length(regexp_replace('a,b,c,', '[^,]', null))
结果:
执行结果如下:
1 a
2 b
3 c
4 d
5 e
参考技术B select id,replace(name ,'_',' ') from 表名 参考技术C select id,substr(name,1,instr(name,'_')-1) as 名字,substr(name,instr(name,'_')+1) as 地名 from tableName 参考技术D select id,substr(name,1,instr(name,'_')-1),substr(name,instr(name,'_')+1) from tableName本回答被提问者采纳

以上是关于oracle 如何把同一个表的同一个字段按条件分成不同的字段查询出来结果集?例如:的主要内容,如果未能解决你的问题,请参考以下文章

用oracle如何查询出一个表中的一个字段内容包含另一个表中的某个字段的值呢

SQL如何查询一张表的所有字段并按其中一个字段进行分组

将一个表的查询结果插入到另一个表中(oracle、mysql、sql 、GP)

oracle数据库要updateA表的数据,条件是A表的a字段等于B表的a字段,请教此update语句如何写。

oracle某表的一个字段有多值,怎么把这值变成多行,其它数据为一样

oracle 字段拼接