1.有些情况需要将几条记录按要求排序,适用于少量要求

表如图所示:

按照e,u,r,o,t,w,q,y,i顺序排序:

 1 SELECT
2 *
3 FROM
4 LGQ_TEST
5 ORDER BY
6 (
7 CASE
8
9 WHEN s = 'e' THEN
10 1
11 WHEN S = 'u' THEN
12 2
13 WHEN S = 'r' THEN
14 3
15 WHEN S = 'o' THEN
16 4
17 WHEN S = 't' THEN
18 5
19 WHEN S = 'W' THEN
20 6
21 WHEN S = 'q' THEN
22 7
23 WHEN S = 'y' THEN
24 8
25 WHEN S = 'i' THEN
26 9 ELSE 0
27 END
28 )

2.递归查询(递归子孙和递归祖先)

 1 -- 递归子孙
2 SELECT
3 pur.CODE
4 FROM
5 PUB_REGION pur START WITH pur.CODE = '370000000000' CONNECT BY PRIOR pur.CODE = pur.PARENT_CODE
6
7 -- 递归祖先
8 SELECT
9 pur.CODE
10 FROM
11 PUB_REGION pur START WITH pur.CODE = '370100000000' CONNECT BY PRIOR pur.PARENT_CODE=pur.CODE

3.异常:ORA-01747: user.table.column, table.column 或列说明无效

因为用了oracle关键字

4.将用逗号隔开的字符串转成in条件

SELECT
regexp_substr( TO_CHAR( 'id1,id2,id3' ), '[^,]+', 1, LEVEL )
FROM
dual CONNECT BY regexp_substr( TO_CHAR( 'id1,id2,id3' ), '[^,]+', 1, LEVEL ) IS NOT NULL

结果为:

 1 --使用
2 SELECT
3 *
4 FROM
5 TABLE
6 WHERE
7 TABLE.ID IN (
8 SELECT
9 regexp_substr( TO_CHAR( 'id1,id2,id3' ), '[^,]+', 1, LEVEL )
10 FROM
11 dual CONNECT BY regexp_substr( TO_CHAR( 'id1,id2,id3' ), '[^,]+', 1, LEVEL ) IS NOT NULL)

5.用自定义符号连接表中某字段,函数LISTAGG()

这个例子是吧这个表中所有记录的id用--连接起来

1 SELECT
2 LISTAGG(PI.ID,'--') WITHIN GROUP(ORDER BY PI.ID DESC) AS STR
3 FROM
4 PROJECT_INFO PI
5 WHERE
6 1=1

结果为:

ORACLE--SQL日常问题和技巧2(自定义排序,递归查询,异常ORA-01747,逗号隔开的字符串转成in条件,用符号连接表中某字段)的更多相关文章

  1. oracle的order by decode根据文字自定义排序的例子

    oracle的order by decode根据文字自定义排序的例子: order by decode(t.title, '当前生效预警', 1, '今日即将生效', 2, '明日预计生效', 3, ...

  2. 使用SQL如何把用逗号等字符隔开的字符串转换成列表(转)

    如何把用逗号等字符隔开的字符串转换成列表,下面依逗号分隔符为例: 比如有一个字符串,其值为:香港,张家港,北京,上海用SQL把这个字符串转换成列表的方法是: 1.方法一 WITH A AS (SELE ...

  3. Oracle中的自连接(self join)-当表中的某一个字段与这个表中另外字段的相关时,我们可能用到自连接。

    http://blog.163.com/wkyuyang_001/blog/static/10802122820091751049479/ 当表中的某一个字段与这个表中另外字段的相关时,我们可能用到自 ...

  4. Oracle中使用游标转换数据表中指定字段内容格式(拼音转数字)

    应用场景:将数据表TB_USER中字段NNDP的内容中为[sannanyinv]转换为[3男1女] 主要脚本:一个游标脚本+分割字符串函数+拼音转数字脚本 操作步骤如下: 1.创建类型 create ...

  5. 在oracle表中增加字段,并调整字段的顺序

    增加字段的语句很简单,以用户身份连接oracle服务: alter table tablename add(colname coltype); # 填上表名.字段名.字段类型 修改字段顺序前,查看表中 ...

  6. SQL查询一个表中类别字段中Max()最大值对应的记录

      SQL查询一个表中类别字段中Max()最大值对应的记录 SELECT A.id, A.name, A.version FROM   DOC A, (SELECT id, MAX(version)  ...

  7. 删除表中一个字段的SQL语句

    1.删除没有默认值的列:alter table Test drop COLUMN BazaarType 2.删除有默认值的列:先删除约束(默认值)alter table Test DROP CONST ...

  8. Oracle 实现表中id字段自增长

    Oracle 实现表中id字段自增长 最近正在学习Oracle的时候发现Oracle表中的字段不能像mysql中那样可以用auto increment修饰字段从而让id这种主键字段实现自增长. 那Or ...

  9. resultMap自定义映射---8.3.1. 解决列名(表中的字段名称)和实体类中的属性名不一致

    1.1.1.1.      步骤一:将驼峰匹配注释掉 --------------测试完成后仍然 回来开启  其他地方可能用到 一旦注释掉驼峰匹配,那么再通过queryUserById查询的结果中,用 ...

  10. Oracle SQL Lesson (3) - 使用单行函数自定义输出

    大小写转换函数LOWER('SQL Course') = sql courseUPPER('SQL Course') = SQL COURSEINITCAP('SQL Course') = Sql C ...

随机推荐

  1. Jenkins pipeline jenkinsfile的两种写作方式声明式和脚本式

    Jenkins pipeline jenkinsfile的两种写作方式,声明式和脚本式. 为什么需要pipeline? 在多年前Jenkins成为最流行的持续集成服务器的Jenkins 1.x时代,所 ...

  2. Java实体类如何映射到json数据(驼峰映射到json中的下划线)

    Java实体类(驼峰)映射到json数据(下划线) 由于经常需要接收前端的json数据,而json数据一般都是使用下划线命名的.后端又不太建议使用map接收,所以就需要用到使用自定义类来接收(如果参数 ...

  3. Jmeter参数化总结

    参数化步骤: 1.连接数据库 2.获取account表手机号数据 3.获取手机号个数 4.增加For Each控制器 5.将请求添加至循环控制器里面 脚本:循环登录.jmx 页面如下: 下面主要说明F ...

  4. 倍增 & Tarjan 求解LCA

    什么是LCA? 假设我们有一棵树: 1 / \ 2 3 / \ / 4 5 6 对于 \(2\) 和 \(6\) 的LCA,就是最近公共祖先,即为距离 \(2\) 和 \(6\) 最近的两个节点公有的 ...

  5. 解决NET Core发布iis项目覆盖原有的项目时"另一个程序正在使用此文件,进程无法访问"

    解决NET Core发布iis项目覆盖原有的项目时"另一个程序正在使用此文件,进程无法访问" 现在net core运用的多了,一系列的问题接踵而来,更新项目发布到iis时就有一个坑 ...

  6. K8s新手系列之Pod的重启策略

    概述 K8s中Pod的重启策略具有确保服务连续性.保证任务完整性.提升资源利用效率.便于故障排查的作用 Pod的重启策略可以根据restartPolicy字段定义. 重启策略适用于pod对象中的所有容 ...

  7. 【经验】Ubuntu18.04切换Python版本及环境,及VScode/pdb调试方法(全)

    文章目录 安装Python并切换 创建Python虚拟环境 方案一:virtualenv+virtualenvwrapper 方案二:venv 方案三:Anaconda 方案四:pipenv Pyth ...

  8. 【HUST】网安|计算机网络实验|实验三 华为ENSP配置

    我没有配置无线AP和AC,使用静态路由. 拓扑图文件链接:Gitee传送门. 在安装了ensp的情况下,解压即可使用. 1. 实验检查要求 2. 实验结果 2.1 我的拓扑图 2.2 我的IP地址划分 ...

  9. 系统自动化DTO实施流程简图

  10. FreeSWITCH Jitter Buffer 技术解析与应用指南

    一.概述 freeswitch是一款简单好用的VOIP开源软交换平台. Jitter Buffer(抖动缓冲器)是实时语音通信中解决网络抖动和延迟问题的核心技术.FreeSWITCH通过STFU(So ...