首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

【DB笔试面试467】Oracle中行列互换有哪些方法?

♣ 题目部分 Oracle中行列互换有哪些方法? ♣ 答案部分 行列转换包括以下六种情况:(1)列转行。(2)行转列。(3)多列转换成字符串。(4)多行转换成字符串。(5)字符串转换成多列。...LISTAGG函数直接转换: SELECT NUM,NAME, SEX, CLASSES, LISTAGG(COURSE_NAME, ',') WITHIN GROUP...LISTAGG函数直接转换: SELECT t.id, LISTAGG(t.col,',') WITHIN GROUP (ORDER BY t.id desc ) FROM T_ROW_STR...+DECODE或CASE来回答,如下所示: SELECT 年, SUM(CASE WHEN 季度=1 THEN 销售量 ELSE 0 END) AS 一季度, SUM(CASE WHEN...答案:此题可以使用listagg函数或者定制的WM_CONCAT函数(参考:【DB笔试面试459】ORA-00904: "wm_concat":invalid identifier错误如何解决?)

1.6K30

Oracle|字符串特殊处理

1问题背景 今天在做报表查询时遇到一个SQL问题: 某需求表环节处理人字段存储的是用户的工号,由于有多人的情况,所以该表在数据存储时是以英文逗号分开存储的。...需求表字段存储结构如下: 需求目标: 解决方案 1) 创建一个Oracle Table 类型 --创建一个表类型 create or replace type table_type as table...灵活的支持业务表多种形式的分割,列:“,”、“|”、“&”、“_”... listagg函数: Oracle19C版本后因wm_concat函数效率过低已废弃,可以通过listagg函数来实现行转列的需求...wm_concat函数使用示例: listagg函数使用示例: wm_concatlistagg对比: 1) wm_concat性能略差 2) wm_concat使用后为CLOB字段需要to_char...转换 3) listagg可以自定义排序方式、以及拼接方式 4) listagg性能优于wm_concat 5) 两者都有长度限制

1.3K30

oracle转postgreSQL修改点

大致有以下原因: oracle是收费的,为了进一步降低成本; 以美国为首的西方国家对华科技种种遏制行为,最近越闹越厉害,最近docker的付费服务就禁止中国企业使用; 甲骨文公司中国区大幅度裁员,或将放弃中国市场也说不定...13、order by的问题: group by的字段一定要在select中查出来,并且如果group by的字段有使用函数,select的时候也要使用相同的函数,例如: select upper(user_id...postgre之对应的是bytea,在java中用byte[]数组对应就可以了。 15、clob类型的问题: oracle中用clob存储大文本,在java中也用clob类型对应。...postgre中没有类似的函数,可以用如下方式实现: case when arg1 = arg2 then arg3 else arg4 end 17、to_date函数的问题: 特别注意,postgre...通过代码去调用存储过程时,要注意以下三点: 调用存储过程的sql语句不需要加大括号,加了大括号的调用的是function而不是procedure; 如果存储过程中用了事务,那个在代码中调用时就不要使用spring

1.6K40

11g中利用listagg函数实现自动拼接INSERT语句

检索了一些网上的资料,有些使用case when,有些使用decode函数,但这些前提是需要知道有多少列需要转换为行,现在我们的问题中是不知道这些,其实Oracle还是有行列转换的函数可以直接做这个工作...我这使用的是11.2版本的库,因此这函数其实已经被删除了,所以才会报ORA-00904错误。 3.Oracle在11.2中其实还是推出了listagg函数,作为可以实现行列转换的新特性。...这么使用listagg函数,就可以将user_tab_cols的column_name字段行转换为列,并用逗号分开。 如果再“懒”一些, ?...甚至可以定制一些脚本可以自动化生成常用的SQL语句。 总结: 1.借助user_tab_cols视图和11g新特性listagg函数,可以实现行列转换的需求。...SQL执行错误,算是一种隐患。

1.1K20

巧用SQLoracle plsql split函数

李伟 专注于oracle pl/sql开发和Java开发,擅长复杂业务逻辑、算法的pl/sql实现。 背景 在软件开发过程中程序员经常会遇到字符串的拼接和拆分工作。...Java程序员通用的做法是在service层将接收的"1001,1002,1003"拆分(使用java split函数),然后封装List,将List传递给DAO,再传递给ORM持久层的xml调用sql...解决方案 本文要做的就是单句SQL实现该功能。 先分析一下,该业务有两个关键点。 一是字符串拼接,oracle(11.2)提供了listagg函数已经实现了该功能,我们直接使用就可以。...函数联合使用,需要构建两张表。...listagg函数联合查询: ? 注意:listaggoracle 11.2版本的新功能。 至此,便简单实现了oracle的字符拆分拼接。

2.1K60

87-with as写法的5种用途

with as的写法, 有一个专有名词, 叫common table expression, 简称CTE,很多开发人员把使用这种写法当成一个提高SQL执行效率的方法, 事实究竟如何, 请往下看....在 oracle优化培训之第二期 的课程中, 我给学员讲了with as的几个用途,下面逐一介绍: 1. 通过materilize生成临时表, 达到优化SQL目的....比如一个大表(或一段查询块), 在SQL中被多次使用, 每次访问表, 都有一些共同的过滤条件, 过滤之后, 结果集变小, 这种情况就比较适合使用with as的写法....注意, 不要以为使用了with as, 就能提高性能, 使用不当反而会降低性能. 只在特定情况下才能提升效率....(col2 , ',') within group (order by col2 ASC) AS orig_value, listagg(CASE WHEN rn=1 THEN col2 END

62210

Oracle listagg去重distinct三种方法总结

一、简介 最近在工作中,在写oracle统计查询的时候,遇到listagg聚合函数分组聚合之后出现很多重复数据的问题,于是研究了一下listagg去重的几种方法,以下通过实例讲解三种实现listagg去重的方法...二、方法 首先还原listagg聚合之后出现重复数据的现象,打开plsql,执行如下sql: select t.department_name depname, t.department_key...oracle官方不太推荐使用wm_concat()来进行聚合,能尽量使用listagg使用listagg。...【b】第二种方法:使用正则替换方式去重(仅适用于oracle字符串大小比较小的情况) --第二种方法:使用正则替换方式去重(仅适用于oracle字符串大小比较小的情况) select t.department_name...去重问题如果拼接的字符串太长会报oracle超过最大长度的错误,只适用于数据量比较小的场景。

3.6K20

字符转换的SQL需求

将(1)和(2)的结果集,进行拼接,使用";"分隔,得到需要的, "dddddd.xx;dddddd.xx;dddddd.xx"。 我们看下想法2的实现, (1)....将(1)和(2)的结果集,进行拼接,使用";"分隔。...参考《11g中利用listagg函数实现自动拼接INSERT语句》,通过listagg函数,将每行的dddddd.xx,用";"拼接,得到需要的结果,如下所示, SQL> SELECT listagg...、substr、regexp_substr、connect by level、length、decode等,但是有些函数,可能是Oracle特有的,如果使用MySQL实现相同的需求,listagg函数可以用...group_concat替代,regexp_substr在MySQL 5.x中是不支持的,而且connect by level是没有直接能用的,据说需要自定义函数来实现,所以在Oracle中能跑的SQL

1K20
领券