1. 使用||拼接:

||的拼接可以实现两个或者多个字符串的拼接。例如:‘aaa’||‘bbb’||‘ccc’,下面为实际工作中批量更新字段长度的实例

select 'alter table ' || a.TABLE_NAME || ' modify ' || a.COLUMN_NAME || ' ' ||a.DATA_TYPE || '(' || a.DATA_LENGTH * 2 || ');'from user_tab_columns awhere a.TABLE_NAME in ('T_DWD_XD_MX')and a.DATA_TYPE = 'VARCHAR2'

结果如下:

2. concat() :

oracle的concat只支持两个字符串的拼接,如果使用多个字符串拼接就要嵌套,用起来很麻烦,所以很少使用。

select concat('AAAA','BBBB' ) from dual;
显示结果:    AAAABBBB

3. listagg()实现多行合并:

下面这个练习实例: 现有各班级选修课程列表,如下图:其中NUM为报名人数

现期望得到如下结果:

create table LX_20200218
(class_id NUMBER,c_name   VARCHAR2(30),num      NUMBER
)
insert into lx_20200218 (CLASS_ID, C_NAME, NUM)
values (1, 'Python', 20);insert into lx_20200218 (CLASS_ID, C_NAME, NUM)
values (1, 'java', 16);insert into lx_20200218 (CLASS_ID, C_NAME, NUM)
values (1, 'C++', 5);insert into lx_20200218 (CLASS_ID, C_NAME, NUM)
values (2, 'Python', 31);insert into lx_20200218 (CLASS_ID, C_NAME, NUM)
values (2, 'java', 22);insert into lx_20200218 (CLASS_ID, C_NAME, NUM)
values (3, 'R', 3);insert into lx_20200218 (CLASS_ID, C_NAME, NUM)
values (3, 'Python', 18);insert into lx_20200218 (CLASS_ID, C_NAME, NUM)
values (3, 'java', 11);insert into lx_20200218 (CLASS_ID, C_NAME, NUM)
values (3, 'C++', 5);

答案:

select a.class_id, wm_concat(a.c_name || '(' || a.num || ')' || '人') as 结果from lx_20200218 agroup by a.class_id;

如果oracle升级到12C之后 wm_concat就不能使用了,要换成下面写法,或者自己在12C环境创建该函数

select a.class_id,listagg(a.c_name|| '(' || a.num || ')' || '人', ',') WITHIN GROUP(ORDER BY a.c_name) from lx_20200218 a
group by a.class_id

ORACLE的SQL练习---7. 拼接字符串相关推荐

  1. 【Oracle】SQL字符串查找_精确查询,只要23不要234

    今日用比较优雅的方法解决了一个挺恼人的问题,特记录之. 1 背景 学生表 studeng 有字段: id, name, courseIDs 分别对应 ID,学生姓名,学生选择的课程ID串 23 |  ...

  2. java怎么写合并列sql_SQL STUFF函数 拼接字符串 多列 合并成一列 转

    关于和并列的 要这种效果. create table tb(idint, value varchar(10)) insert into tbvalues(1,'aa') insert into tbv ...

  3. oracle拼接字符串报错,Oracle 中wmsys.wm_concat拼接字符串,结果过长报错解决

    备忘:这个函数最大是4000,根据拼接列的长度,通过限制拼接条数来防止拼接字符串过长错误 --这个情况是从子表中读取出具,这里直接把它当做查询字段处理,在子表中有所有数据 select info.id ...

  4. oracle数据库的拼接字符串,Oracle数据库拼接字符串

    Ora-03113\Ora-03114与Oracle In 拼接字符串的问题 刚深入接触Oracle不久(大学里以及刚参加工作时学到的Oracle知识只能算是皮毛),因为之前使用SqlServer有将 ...

  5. mybatis中的xml中拼接sql中参数与字符串的方法

    场景 mybatis中接口方法对应的xml文件中的方法中,需要使用模糊搜索, 查询以参数开头的记录. 错误的sql拼接: <if test="locationVO != null an ...

  6. MySQL 批量生成 SQL 脚本语句解决实际的业务需求/如何拼接字符串/拼接字符串的 SQL 语句

    文章目录 实际需求 分析思路 写拼接 SQL 脚本的脚本语句 执行得到脚本语句 保存成 SQL 脚本文件 实际需求 有些行政区域的字段 area_fullname 是空的,如何补全呢?如下所示: 分析 ...

  7. Oracle 分组拼接字符串

    oracle 根据分组拼接字符串,以指定分隔符分割,有两种方式 1)第一种方式,使用 listagg 函数 例子如下: select field1, field2, listagg(field,sep ...

  8. oracle数据库 交集,Oracle两个逗号分割的字符串,获取交集、差集(sql实现过程解析)...

    Oracle数据库的两个字段值为逗号分割的字符串,例如:字段A值为"1,2,3,5",字段B为"2". 想获取两个字段的交集(相同值)2,获取两个字段的差集(差 ...

  9. Mybatis中(#{ })模糊查询like(使用oracle的concat函数嵌套拼接SQL)

    需求: 模糊查询需要左右各拼接一个'%',如:like %key% . 项目情况: mybatis中动态传参一般采用占位符#{key}.使用数据库:orecle. 错误的尝试: 尝试使用: like ...

  10. oracle pl/sql 程序设计 历史笔记整理

    20131016 周三 oracle pl/sql 程序设计 第2章 创建并运行pl/sql代码 sqlplus yjkhecc/yjkhecc@10.85.23.92:1521/orcl 在java ...

最新文章

  1. oracle包函数过程,oracle 函数,包,存储过程简单实例
  2. HTML DOM Console对象
  3. Pandas进阶修炼120题,给你深度和广度的船新体验
  4. 学会这八个技术,你离 BAT 大厂不远了
  5. 业务工作流平台设计(六)
  6. linux bios芯片型号,如何准确判断主板BIOS类型 - 怎么看bios芯片型号_查看bios芯片型号...
  7. 用漫画的方式理解共享锁和排他锁
  8. linux redis 主从配置,redis集群(主从配置)
  9. ReportViewer教程(14)-钻取报表和传入参数
  10. 小汤学编程之JavaEE学习day01——HTTP简介、B/S与C/S应用、连接的建立与断开、Tomcat
  11. 数据结构C语言实现系列——线性表(线性表链接存储(单链表))
  12. linux系统外接硬盘_如何使用外部硬盘安装linux系统?
  13. 【转】JMeter学习(十八)JMeter测试Java(二)
  14. 无废话aspose-words-18.6 java版破解
  15. DTCC 2018大会归来
  16. openg显示Bmp图片
  17. 天啦,这才是英国退欧的真相!
  18. 在手机上怎么修改图片格式?图片怎么转png格式?
  19. gc buffer busy acquire 、gc buffer busy release
  20. 检查android sdk是否安装成功,Android判断手机是否安装微信

热门文章

  1. 一个正经的前端学习 开源 仓库(每日更新)-648道知识点
  2. 2021-09-06
  3. HTC V版M7解锁刷机笔记
  4. anaconda 修复快捷方式
  5. 【Android】 开发即时聊天工具 YQ (仿QQ) 教程:目录
  6. Sentry安装教程
  7. 基于IOS的仿微博系统
  8. 04 _ 可扩展架构案例(一):电商平台架构是如何演变的?
  9. PCHunter_32X64_2022_03最新版
  10. python如何调用dll库中的函数_Python调用DLL动态库函数读写CPU卡