oracle查询怎么转吗 oracle查询转换

oracle 查询结果内容转换创建测试表:
create table test
(score varchar2(100));
insert into test values ('50,60,70');
insert into test values ('60,70,80');
commit;
执行:
select wm_concat(case
when t.score60 then
'不及格'
else
'及格'
end) score
from (select a.rowid rd, REGEXP_SUBSTR(a.score, '[^,] ', 1, l) score
from test a, (SELECT LEVEL l FROM DUAL CONNECT BY LEVEL = 100) b
WHERE l = LENGTH(a.score) - LENGTH(REPLACE(score, ','))1) t
group by t.rd
结果:
oracle表的查询格式转换select 姓名,sum(decode(考试时间,'2014/4',数学成绩,0)) as 201404数学成绩,
sum(decode(考试时间,'2014/4',英语成绩,0)) as 201404英语成绩,
sum(decode(考试时间,'2014/5,数学成绩,0)) as 201405数学成绩,
sum(decode(考试时间,'2014/5,英语成绩,0)) as 201405英语成绩,
sum(decode(考试时间,'2014/6,数学成绩,0)) as 201406数学成绩,
sum(decode(考试时间,'2014/6,英语成绩,0)) as 201406英语成绩
group by 姓名
通常这种问题都是用分组函数和decode来解决的,网上还有不少这方面的例子,你可以查一下 。
关于oracle的查询结果的行列互换 /*
在实际使用sql工作中总会碰到将某一列oracle查询怎么转吗的值放到标题中显示 就是总说的行列转换或者互换
比如有如下数据:
ID NAMEKECHENGCHENGJI
a语文
a数学
b语文
b数学
c语文
c数学
那末oracle查询怎么转吗我要求显示的结果是:
NAMEYUWENSHUXUE
a
也就是说把课程这一列放到行上显示 把成绩按照课程分配到相对应的行
我只介绍 中简单易用的方法 使用游标或者建立临时表的方法就不介绍oracle查询怎么转吗了 效率很慢 不易理解
首先建立表:
*/
create table fzq
(
id varchar( )
name varchar( )
kecheng varchar( )
chengji varchar( )
);
插入数据:
insert into fzq values ( a 语文 );
insert into fzq values( a shuxue );
insert into fzq values ( b yuwen );
insert into fzq values ( b shuxu );
insert into fzq values ( c yuwen );
insert into fzq values ( c shuxu );
/*首先使用union 如果课程这列有多个值 那么脚本的代码就很长了 */
select name sum(yuwen) yuwen sum(shuxue) shuxue from
(
select name chengji yuwen shuxue from fzq
where kecheng= yuwen union
select name yuwen chengjishuxue
from fzq
where kecheng= shuxue
) aaa
group BY name;
/*执行结果:
NAMEYUWENSHUXUE
a
b
c
*/
/*
其次是用case 这种方法代码比较短 适合列值很多的情况
*/
select name sum(case kecheng when yuwen then chengji end) yuwen
sum(case kechengwhen shuxue then chengjiend) shuxue
from fzq
group by name;
/*执行结果:
NAMEYUWENSHUXUE
a
b
c
所有例子在oracle中测试 sql server没有测试 请根据实际情况修改
*/
select name sum(decode(kecheng 语文 chengji null)) 语文
sum(decode(kecheng 数学 chengji null)) 数学
sum(decode(kecheng 英语 chengji null)) 英语
from fzq
lishixinzhi/Article/program/Oracle/201311/18036
如何将Oracle查询结果转成XML文件在oracle中提供了许多内置的程序包 , 它们用于扩展数据库的功能 。在开发应用程序时,可以利用这些程序包 。数据库用户sys拥有oracle提供的所有程序包 。他们被定义为共有同义词,并将执行权限授予了public用户组,任何用户都可以访问它们 。其中DBMS_XMLQUERY包用于将查询结果转换为XML格式,DBMS_LOB程序包包含雨处理大型对象的过程和函数 。下面我们看一下DBMS_XMLQUERY和DBMS_LOB的用法:
SQL DECLARE
result CLOB;
xmlstr VARCHAR2(32767);
lineVARCHAR2(2000);
line_noINTEGER :=1;
BEGIN
result :=DBMS_XMLQUERY.getXml('select empno,empname from employee');
xmlstr :=DBMS_LOB.SUBSTR(result,32767);
LOOP
EXIT WHEN xmlstr IS NULL;
line :=SUBSTR(xmlstr,1,INSTR(xmlstr,CHR(10)-1));
DBMS_OUTPUT.PUT_LINE(line_no || ':' || line);
xmlstr :=SUBSTR(xmlstr,INSTR(xmlstr,CHR(10) 1));
line_no :=line_no1;
END LOOP;
END;
在上面的例子中我们声明了一个CLOB数据类型的result变量,以及VARCHAR2类型的xmlstr和line两个变量 。其中,getXml函数用于将查询结果转换为XML格式,SUBSTR函数检索子字符串,32767值指定要从CLOB数据类型读取的最大字节数 。检索到的字符串存储xmlstr变量中 。LOOP块循环执行,每次从xmlstr中读取一行 。INSTR函数返回一个字符串在另一个字符串首次出现的位置 。在此 , 该函数返回换行符在字符串中的位置,直到遇到下一行 。
大家觉得例子的结果能不能读出我们预期的结果呢?试试就知道了?。。?
结果如下:
?xml version='1.0'?
ROWSET
ROW num="1"
EMPNOE001/EMPNO
EMPNAMEJane/EMPNAME
【oracle查询怎么转吗 oracle查询转换】/ROW
ROW num="2"
EMPNOE002/EMPNO
EMPNAMEJohn/EMPNAME
/ROW
ROW num="3"
EMPNOE003/EMPNO
EMPNAMEJoe/EMPNAME
/ROW
/ROWSET
oracle数据库,查询到的结果怎样修改?在把Oracle查询结果转换为SQL Server的时候要特别当心一些不容易注意到的问题 。
我们知道,T-SQL是SQL Server的语言引擎,而Oracle的语言引擎却是PLSQL.这两种查询语言都对
ANSI SQL-92标准进行了扩展以提供额外的支持力度 。你所创建的应用程序几乎都要用到这些补充特性 。本文就对最常用的、非标准的Oracle扩展进行了说明,同时还要介绍下如何
对这些扩展进行转化以用在SQL Server环境下 。
列的选择
用PLSQL执行数据查询的时候,FROM子句是必须的,这同SQL Server的要求是一样的 。SELECT语句必须选择针对的数据表 。在Oracle数据库内有一种特殊的表DUAL.DUAL表由
Oracle连同数据字典一同创建 , 所有的用户都可以用名称DUAL访问该表 。这个表里只有一列DUMMY,该列定义为VARCHAR2
(1)类型 , 有一行值X.
从DUAL表选择数据常被用来通过SELECT语句计算常数表达式,由于DUAL只有一行数据,所以常数只返回一次 。
Oracle下的DUAL查询如下所示:
SELECT
‘x’ FROM dual
而对等的SQL Server查询则是下面这个样子:
SELECT ‘x’
连接
Oracle用|| 符号作为连接符,而SQL Server的连接符是加号:.
Oracle查询如下所示:
Select ‘Name’ || ‘Last Name’
From tableName
对应的SQL Server查询如下所示:
Select ‘Name’‘Last Name’
数字取舍
Oracle数据库内有一个TRUNC函数,该函数返回m位十进制数的n位;如果省略m则n就是0位 。m的值可以为负,表示截去小数点左边m位数字 。
在SQL Server下可以用Round或者Floor.
以下是Oracle查询:
SELECT
TRUNC(15.79,1) "Truncate" FROM DUAL;
下面是同类查询的SQL Server版本:
SELECT ROUND(15.79 , 0) rounded ,
ROUND(15.79,0,1) truncated
SELECT FLOOR(ROUND(15.79, 0)),
FLOOR(ROUND(15.79,0,1) )
在把Oracle查询转换为SQL Server的时候要特别当心一些不容易注意到的问题 。我们知道,T-SQL是SQL Server的语言引擎 , 而Oracle的语言引擎却是PLSQL.这两种查询语言都对
ANSI SQL-92标准进行了扩展以提供额外的支持力度 。你所创建的应用程序几乎都要用到这些补充特性 。本文就对最常用的、非标准的Oracle扩展进行了说明,同时还要介绍下如何
对这些扩展进行转化以用在SQL Server环境下 。
列的选择
用PLSQL执行数据查询的时候,FROM子句是必须的 , 这同SQL Server的要求是一样的 。SELECT语句必须选择针对的数据表 。在Oracle数据库内有一种特殊的表DUAL.DUAL表由
Oracle连同数据字典一同创建,所有的用户都可以用名称DUAL访问该表 。这个表里只有一列DUMMY,该列定义为VARCHAR2
(1)类型 , 有一行值X.
从DUAL表选择数据常被用来通过SELECT语句计算常数表达式,由于DUAL只有一行数据,所以常数只返回一次 。
Oracle下的DUAL查询如下所示:
SELECT
‘x’ FROM dual
而对等的SQL Server查询则是下面这个样子:
SELECT ‘x’
连接
Oracle用|| 符号作为连接符,而SQL Server的连接符是加号:.
Oracle查询如下所示:
Select ‘Name’ || ‘Last Name’
From tableName
对应的SQL Server查询如下所示:
Select ‘Name’‘Last Name’
oracle查询怎么转吗的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于oracle查询转换、oracle查询怎么转吗的信息别忘了在本站进行查找喔 。

    推荐阅读