ORACLE的SQL练习---7. 拼接字符串
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. 拼接字符串相关推荐
- 【Oracle】SQL字符串查找_精确查询,只要23不要234
今日用比较优雅的方法解决了一个挺恼人的问题,特记录之. 1 背景 学生表 studeng 有字段: id, name, courseIDs 分别对应 ID,学生姓名,学生选择的课程ID串 23 | ...
- java怎么写合并列sql_SQL STUFF函数 拼接字符串 多列 合并成一列 转
关于和并列的 要这种效果. create table tb(idint, value varchar(10)) insert into tbvalues(1,'aa') insert into tbv ...
- oracle拼接字符串报错,Oracle 中wmsys.wm_concat拼接字符串,结果过长报错解决
备忘:这个函数最大是4000,根据拼接列的长度,通过限制拼接条数来防止拼接字符串过长错误 --这个情况是从子表中读取出具,这里直接把它当做查询字段处理,在子表中有所有数据 select info.id ...
- oracle数据库的拼接字符串,Oracle数据库拼接字符串
Ora-03113\Ora-03114与Oracle In 拼接字符串的问题 刚深入接触Oracle不久(大学里以及刚参加工作时学到的Oracle知识只能算是皮毛),因为之前使用SqlServer有将 ...
- mybatis中的xml中拼接sql中参数与字符串的方法
场景 mybatis中接口方法对应的xml文件中的方法中,需要使用模糊搜索, 查询以参数开头的记录. 错误的sql拼接: <if test="locationVO != null an ...
- MySQL 批量生成 SQL 脚本语句解决实际的业务需求/如何拼接字符串/拼接字符串的 SQL 语句
文章目录 实际需求 分析思路 写拼接 SQL 脚本的脚本语句 执行得到脚本语句 保存成 SQL 脚本文件 实际需求 有些行政区域的字段 area_fullname 是空的,如何补全呢?如下所示: 分析 ...
- Oracle 分组拼接字符串
oracle 根据分组拼接字符串,以指定分隔符分割,有两种方式 1)第一种方式,使用 listagg 函数 例子如下: select field1, field2, listagg(field,sep ...
- oracle数据库 交集,Oracle两个逗号分割的字符串,获取交集、差集(sql实现过程解析)...
Oracle数据库的两个字段值为逗号分割的字符串,例如:字段A值为"1,2,3,5",字段B为"2". 想获取两个字段的交集(相同值)2,获取两个字段的差集(差 ...
- Mybatis中(#{ })模糊查询like(使用oracle的concat函数嵌套拼接SQL)
需求: 模糊查询需要左右各拼接一个'%',如:like %key% . 项目情况: mybatis中动态传参一般采用占位符#{key}.使用数据库:orecle. 错误的尝试: 尝试使用: like ...
- oracle pl/sql 程序设计 历史笔记整理
20131016 周三 oracle pl/sql 程序设计 第2章 创建并运行pl/sql代码 sqlplus yjkhecc/yjkhecc@10.85.23.92:1521/orcl 在java ...
最新文章
- oracle包函数过程,oracle 函数,包,存储过程简单实例
- HTML DOM Console对象
- Pandas进阶修炼120题,给你深度和广度的船新体验
- 学会这八个技术,你离 BAT 大厂不远了
- 业务工作流平台设计(六)
- linux bios芯片型号,如何准确判断主板BIOS类型 - 怎么看bios芯片型号_查看bios芯片型号...
- 用漫画的方式理解共享锁和排他锁
- linux redis 主从配置,redis集群(主从配置)
- ReportViewer教程(14)-钻取报表和传入参数
- 小汤学编程之JavaEE学习day01——HTTP简介、B/S与C/S应用、连接的建立与断开、Tomcat
- 数据结构C语言实现系列——线性表(线性表链接存储(单链表))
- linux系统外接硬盘_如何使用外部硬盘安装linux系统?
- 【转】JMeter学习(十八)JMeter测试Java(二)
- 无废话aspose-words-18.6 java版破解
- DTCC 2018大会归来
- openg显示Bmp图片
- 天啦,这才是英国退欧的真相!
- 在手机上怎么修改图片格式?图片怎么转png格式?
- gc buffer busy acquire 、gc buffer busy release
- 检查android sdk是否安装成功,Android判断手机是否安装微信