`
zhanglu0223
  • 浏览: 22805 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

强大的SQL之SQL Cookbook读书笔记1——对字母数字混合的数据排序

 
阅读更多

最近,在看SQL Cookbook真的很不错的一本书,许多解决方案,都十分精妙,真切的体会到了,SQL的强大。

注:我用的是ORACLE 11g


下面是书2.4中的一个实例--对字母数字混合的数据序列的排序

首先,我们需要书中的一张表emp,书中没有提供建表的文件或者是语句。我用的是ORACLE数据库,按照书上的数据自己建的emp表,随便建一个表,然后把数据存起来,下面是数据插入的SQL,你们有福啦,就不要一条条输入了,PS:本来想上传emp表的dump文件的,可是上传限制。

insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7369, 'SMITH', 'CLERK', 7902, '17-DEC-1980', 800, null, 20);

insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7499, 'ALLEN', 'SALESMAN', 7698, '20-FEB-1981', 1600, 300, 30);

insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7521, 'WARD', 'SALESMAN', 7698, '20-FEB-1981', 1250, 500, 30);

insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7566, 'JONES', 'MANAGER', 7839, '02-APR-1981', 2975, null, 20);

insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7654, 'MARTIN', 'SALESMAN', 7698, '28-SEP-1981', 1250, 1400, 30);

insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7698, 'BLAKE', 'MANAGER', 7839, '01-MAY-1981', 2850, null, 30);

insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7782, 'CLARK', 'MANAGER', 7839, '09-JUN-1981', 2450, null, 10);

insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7788, 'SCOTT', 'ANALYST', 7566, '09-DEC-1982', 3000, null, 20);

insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7839, 'KING', 'PRESIDENT', null, '17-NOV-1981', 5000, null, 10);

insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7844, 'TURNER', 'SALESMAN', 7698, '08-SEP-1981', 1500, 0, 30);

insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7876, 'ADAMS', 'CLERK', 7788, '12-JAN-1983', 1100, null, 20);

insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7900, 'JAMES', 'CLERK', 7698, '03-DEC-1981', 950, null, 30);

insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7902, 'FORD', 'ANALYST', 7566, '03-DEC-1981', 3000, null, 20);

insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
values (7934, 'MILLER', 'CLERK', 7782, '23-JAN-1982', 1300, null, 10);

建好表,插好数据,然后,建一个视图,语句如下,

CREATE VIEW v
AS
SELECT ename||' '||deptno AS DATA
FROM emp

接着,就是要通过建立的视图v里面的字母或者数字,排序查询结果,如何做呢?

1. 分离出数字,通过数字(DEPTNO)排序查询结果,经ORACLE数据库验证,可行,SQL如下:

SELECT DATA
  FROM V
 ORDER BY REPLACE(DATA,
                  REPLACE(TRANSLATE(DATA, '0123456789', '##########'),
                          '#',
                          ''),
                  '');

2. 分离出字母,通过字母(ENAME)排序查询结果,经ORACLE数据库验证,可行,SQL如下:

SELECT DATA
  FROM V
 ORDER BY REPLACE(TRANSLATE(DATA, '0123456789', '##########'), '#', '');
我看的时候,就感觉分离出来的字母,后面多一个空格,于是看到了书中的分离视图(VIEW)的查询语句,证实,我的想法是正确的,查询语句如下

SELECT DATA,
       REPLACE(DATA,
               REPLACE(TRANSLATE(DATA, '0123456789', '##########'), '#', ''),
               '') NUMS,
       REPLACE(TRANSLATE(DATA, '0123456789', '##########'), '#', '') CHARS
  FROM V;
把分离查询出来的字段CHARS中的值拷贝,粘贴出来,确实后面多个空格。


SQL,如此强大,学到了,哈哈。

分享到:
评论

相关推荐

    SQL.Cookbook(中文高清PDF)

    《SQL Cookbook中文版》中的SQL 是计算机世界的语言,在用关系数据库开发报表时,将数据放入数据库以及从数据库中取出来,都需要SQL 的知识。很多人以一种马马虎虎的态度在使用SQL,根本没有意识到自己掌握着多么...

    SQL COOKBOOK 初始数据

    《SQL COOKBOOK 初始数据》是一本针对SQL初学者和进阶者的手册,旨在帮助读者掌握SQL语言的基础和高级技巧,特别是处理数据的初始阶段。在这个压缩包中,包含了一个名为"SQL+COOKBOOK.SQL"的文件,很可能是一个集合...

    ORACLE__SQL.pdf SQL.Cookbook.pdf

    这两本书——"ORACLE__SQL.pdf"和"SQL.Cookbook.pdf"为学习和精通SQL提供了宝贵的资源。 "ORACLE__SQL.pdf"很可能是一本详尽的Oracle SQL指南,它涵盖了从基础到高级的Oracle SQL语法和特性。这本书可能包含以下几...

    SQL COOKBOOK(压缩1/2)

    2.4对字母数字混合的数据排序 2.5处理排序空值 2.6根据数据项的键排序 第3章 操作多个表 3.1记录集的叠加 3.2组合相关的行 3.3在两个表中查找共同行 3.4从一个表中查找另一个表没有的值 3.5在一个表中查找...

    SQL Cookbook.pdf

    《SQL Cookbook.pdf》这本书是关于SQL查询的一本实用指南,主要针对MySQL数据库系统。SQL(Structured Query Language)是用于管理关系数据库的标准语言,包括数据查询、更新、插入和删除等操作。这本书旨在帮助读者...

    SQL Cookbook.zip

    《SQL Cookbook》是一本针对SQL初学者和进阶者极具价值的工具书,它涵盖了多种数据库系统的SQL语法,旨在帮助读者快速掌握SQL的核心概念并解决实际问题。这本书的前100页通常会引导读者逐步了解SQL的基础知识,从而...

    SQL Server 2017 Integration Services Cookbook [pdf]

    sql-server-2017-integration-services-cookbook.pdf sql-server-2017-integration-services-cookbook.pdf sql-server-2017-integration-services-cookbook.pdf sql-server-2017-integration-services-cookbook.pdf ...

    sql cookbook(SQL经典)

    《SQL Cookbook》是一本针对SQL查询的经典指南,旨在帮助用户解决在实际操作中遇到的各种问题。这本书涵盖了SQL的基础规范以及一些常见的错误,是数据库管理、数据分析和开发人员的重要参考资料。 一、基本SQL规范 ...

    最棒SQL书籍(SQL COOKBOOK 中文版)

    1. **基础查询**:介绍如何使用SELECT语句从数据库中检索数据,包括基本的字段选择、过滤条件(WHERE子句)、排序(ORDER BY子句)和分组(GROUP BY子句)。 2. **联接操作**:涵盖了内连接(INNER JOIN)、左连接...

    SQL COOKBOOK 英文版

    《SQL Cookbook》英文版是一本深受软件开发人员和数据库管理员(DBA)喜爱的实用指南。这本书涵盖了Oracle、SQL Server和MySQL等主流数据库系统的SQL语法和实例,旨在提高读者在处理数据查询、分析和管理时的效率。 ...

    SQL Cookbook中文版本

    - **4.2.3 SQL Server:**具有强大的集成服务(SSIS)和分析服务(SSAS),适合大型企业级数据分析项目。 通过以上内容可以看出,《SQL Cookbook中文版》不仅覆盖了SQL基础操作,还深入讲解了高级查询技巧以及...

    PHP Cookbook读书笔记 – 第15章创建Web服务.docx

    1. 使用`SOAPClient`创建SOAP客户端,配置选项,调用远程方法,并设置SOAP头。 2. 实现`SOAPServer`创建SOAP服务端,定义处理方法,并通过`setClass`设置服务类。 3. 创建和添加SOAP头以传递额外的信息,如时区设置...

    SQL Cookbook中文版

    SQL 是计算机世界的语言,在用关系数据库开发报表时,将数据放入数据库以及从数据库中取出来,都需要SQL 的知识。很多人以一种马马虎虎的态度在使用SQL,根本没有意识到自己掌握着多么强大的武器。本书的目的是打开...

    SQL Cookbook.part1

    SQL Cookbook.part1SQL Cookbook.part1SQL Cookbook.part1

Global site tag (gtag.js) - Google Analytics