oracle如何拼接查询,oracle sql 拼接

oracle把查询出的字段拼接在一起

Oracle一列的多行数据拼成一行显示字符

成都创新互联公司专业为企业提供任丘网站建设、任丘做网站、任丘网站设计、任丘网站制作等企业网站建设、网页设计与制作、任丘企业网站模板建站服务,十多年任丘做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

oracle 提供了两个函数WMSYS.WM_CONCAT 和 ListAgg函数。

先介绍:WMSYS.WM_CONCAT

例:

id name

1 aa

2 bb

3 cc

要的结果是"aa,bb,cc"

select WMSYS.WM_CONCAT(a.name) from user a

这样的话,查询出的结果:"aa,bb,cc"

分隔符如果不需要用英文的逗号,需要改成别的符号比如分号的,可以用下面的方法替换下:

select replace(WMSYS.WM_CONCAT(a.name),',',';') from user a

结果:"aa;bb;cc"

======================================================================

ListAgg函数

listagg函数的语法结构如下:

LISTAGG( [,]) WITHIN GROUP (ORDER BY ) [OVER (PARTITION BY )]

listagg虽然是聚合函数,但可以提供分析功能(比如可选的OVER()子句)。使用listagg中,下列中的元素是必须的:

•需要聚合的列或者表达式

•WITH GROUP 关键词

•分组中的ORDER BY子句

例子:

DEPTNO ENAME

--------- ----------

10 CLARK

10 KING

10 MILLER

20 ADAMS

20 FORD

20 JONES

按照DEPTNO字段分组,对结果集进行字符串聚合,结果如下:

DEPTNO AGGREGATED_ENAMES

--------- -------------------------

10 CLARK,KING,MILLER

20 ADAMS,FORD,JONES

SQL:

SELECT deptno,LISTAGG(ename, ',') WITHIN GROUP (ORDER BY ename) AS employees FROM emp GROUP BY deptno;

oracle中拼接查询语句

因为'x'||to_char(sysdate,'dd')=‘xxxx’这个条件不满足,所以查询不到数据。

'x'||to_char(sysdate,'dd')明显不等于'xxxx',能查询到数据就是怪事了。

如果你想查询到数据,必须保证'x'||to_char(sysdate,'dd')的值等于'xxxx'

就拿今天来说'x'||to_char(sysdate,'dd')的值肯定是x24。

'xxxx'的值是为xxxx,不等于x24。肯定查询不到数据。

你这个语句就跟

select

name

from

a

where

12这个语句的效果一样。

如果你的xxxx表示你表中的一个字段,比如x1,x2..x31,

如:

select

name

from

a

where

'x'||to_char(sysdate,'dd')=x24;

你做关联的是用你的字段名,但是判断取值的是时候,却是取的x24这一列里面的值。

如果x24这一列里面有一列的值是x24,肯定查得出数据,如果没有,肯定就查不出来,

你先确实有没得x24这条数据记录了来。。

模糊查询时oracle中的字符串的拼接

在根据条件模糊查询的时候,有如下三种写法:

SELECT * from tab1 t where t.col1 like '%a%';

SELECT * from tab1 t where t.col1 like '%' || 'a' || '%';

SELECT * from tab1 t where t.col1 like concat(concat('%','a'),'%');

如上三种写法的等效的,最常用的是第一张写法,第二种第三种使用拼接,但是不同在于 || 可以无限拼接,类似于拼接字符串时候的 +,而concat 是oracle中的函数,CONCAT(char1 , char2),此函数中有且仅有2个参数,所以第三种写法拼接了2次。


网站标题:oracle如何拼接查询,oracle sql 拼接
路径分享:http://myzitong.com/article/hdceej.html