GROUP_CONCAT为MySQL提供的函数,MaxCompute对应为wm_concat。
最近数据库从10.2.0.3升级到了10.2.0.5之后,一些对象无法编译通过。查看了这些对象主要表现在之前写法不严格的SQL语法导致了这些package无法成功编译,诸如select查询列中不能使用混淆的列名称等。另外一个比较表现突出的是返回ORA-00932: inconsistent datatypes: expected - got CLOB错误,即不一致的数据类型,获得CLOB数据类型。下面是这个问题的症状及对策。
本站文章除注明转载/出处外,均为本站原创,转载前请务必署名,转载请标明出处 最后编辑时间为: 2021/11/29 18:37:29
原标题:oracle的wm_concat()和mysql的group_concat()合并同列变成一行的用法以及和concat()合并不同列的区别
最近项目Oracle数据库升级由11g升到19C,在验证过程中发现wm_concat函数竟然失效了。
ORA-00904: "wm_concat":invalid identifier错误如何解决?
某需求表环节处理人字段存储的是用户的工号,由于有多人的情况,所以该表在数据存储时是以英文逗号分开存储的。
XMLAGG函数语法基本如图,可以用于列转行,列转行函数在oracle里有好几种方法,wm_concat也可以做
在SQL Server中合併列值能够使用For Xml Path,在Oracle中則能够使用wm_concat 或 ListAgg。
本博客记录一下Oracle列转行函数在Oracle11的一些不兼容问题,vm_concat在一些业务场景是必须的。不过这个函数使用要谨慎,底层实现应该也是group by等等实现的,性能并不是特别好。这个函数在Oracle12是没有的,在Oracle11是不太兼容的,Oracle10可以正常使用。最近遇到这个问题,网上博客很多都写到了自定义列转行函数的办法去解决。但是这种办法并不一定适用所有的业务场景。我并没有采用。不过有些场景还是可以使用的。
-- 行转列 SELECT * from ( SELECT tt1.SAP_ID,TT1.dt,TT1.EFF from ( SELECT t1.SAP_ID,T1.DT,nvl(T2.EFFECTIVE,0) eff from ( SELECT A1.SAP_ID,mr.dt from (SELECT DISTINCT SAP_ID from DATA_EMP_ATTENDANCE) a1, (SELECT TO_DATE('2018-11-01','YYYY-MM-DD')+ROWNUM - 1 DT FROM DUAL CONNECT BY LEVEL <=(TO_DATE('2018-11-15','YYYY-MM-DD')-TO_DATE('2018-11-01','YYYY-MM-DD')+1)) mr ) t1 LEFT JOIN ( SELECT SAP_ID,BEGIN_DATE,1 effective from DATA_EMP_ATTENDANCE ) t2 ON T2.SAP_ID = T1.SAP_ID AND T2.BEGIN_DATE = T1.DT ORDER BY t1.dt DESC ) tt1 ) pivot (max(eff) for dt in (to_date('2018-11-05','yyyy-mm-dd') d1,to_date('2018-11-12','yyyy-mm-dd') d2,to_date('2018-11-12','yyyy-mm-dd') d3)); ```
oracle中有一个看似很NB的内置函数wm_concat,可以方便的实现“行转列”功能(相关用法,大家自行搜索一下,能找到很多资料) 今天偶然发现一个问题: 在不同的oracle版本中,wm_con
(1)decode(x,a1, b1, a2, b2, ... , an, bn):判断x,如果为a1则返回b1,如果为a2则返回b2,...,如果为an则返回bn。如果bm为传入,则返回空。表达式结果的类型由b1决定。
墨墨导读:本文来自墨天轮用户“只是甲”的投稿,总结所有Oracle行转列的语法,供大家参考学习。
针对oracle拼接函数的乱码,首先查询一下oracle字符的编码是否支持中文,查询语句: SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = ‘NLS_CHARACTERSET’; 如果是中文的,则选择另一种方式: wmsys.wm_concat(to_char(….))..应该加上to_char() 在拼接的字段加上转换。
介绍:其函数在Oracle 11g 版本中推出,对分组后的数据按照一定的排序进行字符串连接。
我的思路是先把带逗号的字段转成多行,然后再映射,于是先拿 XSHG,XSHE 测试是否可行
该文介绍了Oracle中的instr函数和wm_concat函数。instr函数用于查找字符串中的子串,wm_concat函数用于将多个字符串连接在一起。
本来今天想继续写另一篇外传,但总是熬这么晚不是个事儿,况且今儿北京又输了,恨铁不成钢,堵得慌。。。
今天需要实现一个table,有一列的效果是:用户姓名A(账号a),用户姓名B(账号b)…这种格式。这就想到oracle的列转行函数vm_concat。 可以用类似这种格式wm_concat(a || ‘(’ || b || ‘)’),a表示用户名字段,b表示账号字段。 例子:
最近在工作中,在写oracle统计查询的时候,遇到listagg聚合函数分组聚合之后出现很多重复数据的问题,于是研究了一下listagg去重的几种方法,以下通过实例讲解三种实现listagg去重的方法。
无论是在Oracle还是MySQL等数据库中都有其内置函数,即嵌入到主调函数中的函数。Oracle内置函数能够大幅度提高程序的执行效率,实现各种各样的数据库功能。下面我们来看看常用的Oracle内置函数。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/53906139
nvl函数 nvl函数基本语法为nvl(E1,E2),意思是E1为null就返回E2,不为null就返回E1。
由于项目上的需要,把项目实现国产化,把底层的MySQL数据库替换为国产的达梦数据库,花了一周的时间研究了国产的数据库-达梦数据库,它和MySQL有一定的区别,SQL的写法也有一些区别。
达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM,它具有如下特点:
相信开发的朋友会有这样一种感慨,sql写的好,能够大大减少java代码的编写,尤其对于强大的Oracle来说熟练掌握sql尤为重要,之前用过很多的oracle函数,由于没有总结很容易忘记
本章介绍多表查询的概念,什么是笛卡尔集,等值连接、不等值连接、外连接、自连接和层次查询等多表连接查询的内容。
需求:首先根据角色ID (JSID) 查到角色组ID (JSZID),根据角色组ID (JSZID) 找到对应权限的文档ID (DOCID) 根据文档ID (DOCID) 找到附件的ID (FIEFLID) 根据附件ID找到附件编号(filebh) 附件名称(filemc) 附件后缀名(fileex)
1、查询要批量删除的表 SELECT * FROM USER_TABLES SELECT 'DROP '||'TABLE ' || TABLE_NAME ||' ;' ,1 FROM USER_TABLES WHERE TABLE_NAME LIKE 'T_DIM%'; 2、创建临时表 CREATE TABLE tab_xn_ddd (names varchar2(100),idd number(2)); 3、将要删除的表结果插入到数据库中 insert into hos_tab_xn_ddd SE
3、导出数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名
大家好,又见面了,我是你们的朋友全栈君。 Oracle11.2新增了LISTAGG函数,可以用于字符串聚集,测试如下: 1,版本 SQL> select * from v$version; BANNER ——————————————————————————– Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – Production PL/SQL Release 11.2.0.1.0 – Production CORE 11.2.0.1.0 Production TNS for Linux: Version 11.2.0.1.0 – Production NLSRTL Version 11.2.0.1.0 – Production 2,测试数据 SQL> SQL> select empno,ename,deptno from scott.emp; EMPNO ENAME DEPTNO —– ———- —— 7369 SMITH 20 7499 ALLEN 30 7521 WARD 30 7566 JONES 20 7654 MARTIN 30 7698 BLAKE 30 7782 CLARK 10 7788 SCOTT 20 7839 KING 10 7844 TURNER 30 7876 ADAMS 20 7900 JAMES 30 7902 FORD 20 7934 MILLER 10 14 rows selected 3,作为聚集函数 SQL> SELECT deptno, 2 LISTAGG(ename, ‘,’) WITHIN GROUP(ORDER BY ename) AS employees 3 FROM scott.emp 4 GROUP BY deptno; DEPTNO EMPLOYEES —— ——————————————————————————– 10 CLARK,KING,MILLER 20 ADAMS,FORD,JONES,SCOTT,SMITH 30 ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD SQL> –更换排序列 SQL> SELECT deptno, 2 LISTAGG(ename, ‘,’) WITHIN GROUP(ORDER BY hiredate) AS employees 3 FROM scott.emp 4 GROUP BY deptno; DEPTNO EMPLOYEES —— ——————————————————————————– 10 CLARK,KING,MILLER 20 SMITH,JONES,FORD,SCOTT,ADAMS 30 ALLEN,WARD,BLAKE,TURNER,MARTIN,JAMES –order by必须存在 SQL> SELECT deptno, 2 LISTAGG(ename, ‘,’) WITHIN GROUP() AS employees 3 FROM scott.emp 4 GROUP BY deptno; SELECT deptno, LISTAGG(ename, ‘,’) WITHIN GROUP() AS employees FROM scott.emp GROUP BY deptno ORA-30491: ORDER BY 子句缺失 SQL> SELECT deptno, 2 LISTAGG(ename, ‘,’) WITHIN GROUP(order by null) AS employees 3 FROM scott.emp 4 GROUP BY deptno; DEPTNO EMPLOYEES —— ——————————————————————————– 10 CLARK,KING,MILLER 20 ADAMS,FORD,JONES,SCOTT,SMITH 30 ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD ==〉按字母顺序排列 4,LISTAGG作为分析函数使用 SQL> SELECT empno, 2 ename, 3 deptno, 4 LISTAGG(ename, ‘,’) WITHIN GROUP(ORDER BY ename) over(partition by deptno) AS employees 5 FROM sco
呵呵,前几天拿到了数据挖掘基础教程一书,感觉部分算法是基于统计学的原理的,而统计学是可以通过Oracle来实现。
常用关键字 insert into---插入数据 delete---删除数据 update---更新一条数据 select---实际工作中尽量不要写* set---设置某些属性 where---给执行的语句加限制条件 --增加信息 1 insert into p_dept(deptno,dname,loc) values (50,'ceshi','ceshi'); commit; --增加信息 2 insert into p_dept values (60,'ceshi','ceshi'
按照指定字符进行合并或拆分是经常碰到的场景,MySQL在合并的写法上比较简单,但是按指定字符拆分相对比较麻烦一点(也就是要多写一些字符)。本文将举例演示如何进行按照指定字符合并及拆分。
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说oraclesql面试题sql笔试题_oracle高级面试题,希望能够帮助大家进步!!!
前面发布了一篇关于clickhouse常用的基础语法,有很多浏览量,这次给小伙伴分享几个进阶语法,比如如何实现分时统计,当然是通过我们的toStartOfDay()语法实现的,如何实现聚合某一列,如何更新操作,我会举几个例子供大家参考使用。 想了解其他数据库语法,请看。
在a 的结果集,用了group by ,其实相当于将表“降维”了。假如原来1000行,现在分组后结果集变为100行了。 在b 的结果集,没用group by ,它还是原来的维度。 当它们left join时,肯定会再扩展回来呀,升维成为1000行。
有时候有oracle转mysql的需求, 主要是mysql限制太多了, 除了自增挺好用的, 其它的都还有待加强
行列转换包括以下六种情况:(1)列转行。(2)行转列。(3)多列转换成字符串。(4)多行转换成字符串。(5)字符串转换成多列。(6)字符串转换成多行。其中,重点是行转列和字符串转换成多行。
大家好,上期分享了一次MS12-020蓝屏漏洞的巧用。这篇文章源于之前做的一个银行红队项目,遇到到了一个Oracle数据库的SQL注入漏洞,但是网上能搜索到的各种SQL语句都没法出数据,所以客户不认可这个漏洞的危害性,于是就开始了对这个Oracle的SQL注入绕WAF的探索过程:
八、子查询 示例代码如下: 子查询.txt SQL> --rownum 行号 SQL> select rownum,empno,ename,sal from emp; ROWNUM EMPNO ENAME SAL
(2)显示表分区信息,显示数据库所有分区表的详细分区信息:DBA_TAB_PARTITIONS。
SQL> create table idtable (id number,name varchar2(30));
今天给各位分享两道数据分析试题,这是腾讯数据分析面试官在面试时考察候选人喜欢出的题,属于硬性技能考察题目,特别好用。
领取专属 10元无门槛券
手把手带您无忧上云