SQL函数

SQL是用于访问和处理数据库的标准的计算机语言,我们所使用的的是Oracle SQL

一个数据库通常包含一个或多个表,每个表有一个名字表示,下图即为一个名为“emp”的表,接下来的操作都将基于以下的表进行

## 字符函数

字符函数:主要指参数类型是字符型,不同函数返回值可能是字符型或数值型

【大小写转换】

函数 效果 结果

LOWER('SQL Course')

将大写或大小写混合的字符转换成小写 sql course

UPPER('SQL Course')

将小写写或大小写混合的字符转换大写 SQL COURSE
INITCAP('SQL Course') 将每个单词的第一个字母转换成大写,其余的字母都转换成小写 Sql course

## 字符处理函数

## 数值函数

  • DUAL:是一张虚表,不能保存任何数据,只有一个字段,一行记录。当我们不希望从任何表中读取数据,同时又想利用SQL引擎中的计算表达式的能力帮我们运算时,就可以使用DUAL表。
select ROUND(100.456,2),Round(100.456,0),Round(100.456,-1) from DUAL

## Date函数

默认的日期形式是: DD-MON-RR

我们可以在系统变量-环境变量中,添加   key = NLS_DATE_FORMAT  value = YYYY:MM:DD HH24:MI:SS  就可以正常按照‘年与日’的格式查询了!

SELECT  ename, sal, MONTHS_BETWEEN(SYSDATE,hiredate) months FROM emp ORDER BY months;
SELECT  ename, sal, hiredate, ADD_MONTHS(hiredate,3) new_date FROM emp WHERE  hiredate>'01-1月-82';
SELECT  NEXT_DAY('2006-02-06','星期一') NEXT_DAY FROM DUAL;
SELECT  LAST_DAY('02-2月-06') "LAST DAY" FROM DUAL;

SELECT  empno, hiredate, ROUND(hiredate, 'MONTH') FROM emp WHERE SUBSTR(hiredate,-2,2)='81';
SELECT  empno, hiredate, TRUNC(hiredate, 'MONTH') FROM emp WHERE SUBSTR(hiredate,-2,2)='81';

## 转换函数

【隐式数据类型转换规则】

  • 不同的数据类型之间关联,如果不使用显式转换函数,则它会根据以下规则对数据进行隐式转换:   

    • 对于 INSERT 和 UPDATE 操作,oracle会把插入值或者更新值隐式转换为字段的数据类型
    • 对于SELECT语句,oracle会把字段的数据类型隐式转换为变量的数据类型
    • 当比较一个字符型和数值型的值时,oracle会把字符型的值隐式转换为数值型
    • 当比较字符型和日期型的数据时,oracle会把字符型转换为日期型
    • 用连接操作符 (||)时,oracle会把非字符类型的数据转换为字符类型
    • 如果字符类型的数据和非字符类型的数据(如number、date、rowid等)作算术运算,则oracle会将字符类型的数据转换为合适的数据类型,这些数据类型可能是number、date、rowid等

 【显式数据类型转换规则】

  • 通常是在字符类型、日期类型、数值类型之间进行显式转换。
  • 主要的三种显式转换函数:TO_char  TO_NUMBER TO_DATE
  • To_char(日期格式模型)
    • 必须用单引号引起来并且是大小写敏感的
    • 可以包含任何有效的日期元素
    • 使用逗号将日期型数据与日期型格式模型分隔开
    • 日期格式模型的元素
    • To_char用于日期型,用时间元素 格式化日期的事件部分
    • To_char语句中也可以通过双引号添加字符串
    • To_char作用于数值型,可以按照以下形式将数值型数据转化为变长的字符串
    • 栗子:
      SELECT ename, TO_CHAR(hiredate, 'DD Month YYYY') HIREDATE FROM  emp;
      Select To_char(sal,'$99,999') Salary from emp where ename = 'Scott'

  • To_number:可以将一个字符串转换成数值型数据

    select to_number(1999) year from dual;

  • To_Date: 将一个字符串转换成日期型数据

    select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;

## 通用函数

  • 通用函数即与空值(NULL)相关的一些函数,完成对空值(NULL)的一些操作。
  • 主要包括以下函数:
    • NVL:如果expr1不是null,返回expr1,否则返回expr2

      SELECT ename, sal, comm, (sal*12)+NVL(comm,0) from emp

    • NVL2:如果expr1不是null,返回expr2,否则返回expr3
    • NULLIF:比较两个表达式,如果相等,返回null,否则,返回第一个表达式
    • COALESCE: COALESCE (表达式1, 表达式2, ...,表达式n)函数是对NVL函数的扩展。COALESCE函数的功能是返回第一个不为空的参数,参数个数不受限制。
      SELECT  ename, COALESCE(comm, 0)  comm , deptno FROM   emp;

  • 条件处理函数:
    • CASE表达式:

      SELECT ename, deptno,(CASE deptno     WHEN 10  THEN '销售部'WHEN 20  THEN '技术部'WHEN 30  THEN '管理部'ELSE '无'    END)   deptname
      FROM emp;

    • DECODE
      SELECT ename, deptno,decode(deptno,10,'销售部',20,'技术部',30 , '管理部','无')   deptname
      FROM emp;

转载于:https://www.cnblogs.com/hithongming/p/9322387.html

【东软实训】SQL函数相关推荐

  1. [记录]明天开始东软实训

    这个假期对于我来说没有假可放,因为我要参加 东软实训,方向肯定是.NET方向. 我们这次最终的项目是实训OA系统(自动办公系统).OA上比较常见的案例.希望能在这次实训中,学习更好的知识.特别是Ent ...

  2. 东软实训推荐面试问题12:三分钟表现自己使我感兴趣就留下来?

    东软实训推荐面试问题:三分钟表现自己使我感兴趣就留下来? 问题:你可以有三分钟的表现自己的机会,若表现得使我感兴趣,就留下来,否则另请高就. 回答:这三分钟的表现,可以成为你去留的依据,有的学生充分显 ...

  3. 东软实训心得:万事开头难

    在东软实训三个多月的JavaEE,有了许多心得体会,在这里小小的发些感慨,希望对刚刚来东软实训的同学有些帮助.毕竟我现在也算是一个过来人了. 起初我在大学的时候只是学过一些基本的JavaSE,记得那时 ...

  4. 东软实训心得:做事务的主宰者

    转眼间,来到东软实训已经一个礼拜了.从陌生的城市,陌生的人群,陌生的气候带来的茫然与不安的情绪,被和蔼可亲的班主任老师独有的东北人热情友善感染,使我渐渐适应,转为现在的放心与安定.我的父辈本也就是沈阳 ...

  5. 东软实训心得:用正能量去学习和交流

    用正能量去学习和交流--李同学    时间飞逝,当我还在感受每一天新鲜的事物时,就在今天,张老师给我们留了一个表达实训心得体会的机会,突然意识到我已经来东软2个多月了!!! 从9月份走来,在东软实训的 ...

  6. 【东软实训】SQL多表链接

    如果一个查询同时涉及两个以上的表,则称之为链接查询,链接查询是关系数据库中最主要的查询,主要包括等值链接查询.非等值链接查询.自身链接查询.外链接查询和复合条件链接查询.  这篇博文我们来对多表链接进 ...

  7. 头歌Python实训答案——函数结构

    第1关:函数的参数 - 搭建函数房子的砖 编程要求 本关的编程任务是补全src/Step1/plus.py文件的代码,实现相应的功能.具体要求如下: 定义并调用一个函数,功能是对输入的列表中的数值元素 ...

  8. 东软实训项目个人总结

    项目个人总结 时间有如流水,转眼间项目已经进入了尾声,经历了这段时间的在东软的项目经历,对我而言收获是很大的,感触也颇深.有以下几点是让我感受很深的.这次我参加的项目组做的是<基于linux下的 ...

  9. Python头歌实训之函数

    1.定义判断质数的函数 def isprime(a):for i in range(2, a):if a%i == 0:return Falsebreakelse:return True #代码开始 ...

最新文章

  1. AD rodc扩展报错
  2. 实战Solaris 10
  3. 数据库中char varchar nchar nvarchar的区别
  4. 分析性能瓶颈 — 调试OutOfMemoryException
  5. 使用redis作为Return存储方式
  6. android 暂停其他app的声音_【一万个APP】第二十二期潮汐
  7. 【软件】OBS无法捕捉显示屏
  8. iOS 14.5刚推送,苹果隐私政策就遭反垄断投诉
  9. 本地修改PHP修改文件,PHP脚本批量修改本地文件名
  10. 无法更新标识列 wechatid_天津塘沽企业标识标牌设计制作安装的过程
  11. Trace32 加载高通 ramdump
  12. API接口性能测试应该关注哪些指标
  13. 百度95后程序员删库跑路,因工作变动和对领导不满,已被民警抓获
  14. c语言平 ac自动机,多模式串匹配之AC自动机算法(Aho-Corasick算法)简介与C语言程序实现源码参考...
  15. 2021-05-26--CHEN scary
  16. java 水晶按钮_C#中水晶按钮的程序生成
  17. 测试一个教室和一个椅子
  18. 2017-本命年里发生的那些事
  19. Python之pip升级命令
  20. 4月4日网站变灰实录

热门文章

  1. dwr框架查看外放方法_先睹为快!IntelliJ IDEA v2019.3带来的新框架和新技术
  2. JAVA中的isMirror函数_Swift中的反射Mirror
  3. #计算长方形的周长和面积公式_Animate如何制作动态计算长方形面积及周长
  4. ajax跨域请求wcf,ajax wcf 指定某个域名 进行跨域访问
  5. matlab里a1不能做变量,在matlab中将含有变量“w”的表达式存入矩阵元素,无法生成矩阵。哪里出问题了?...
  6. windows iphone 传输
  7. 学习Java必须避开的十大致命雷区,新手入门千万不要踩!
  8. Centos安装php提示virtual memory exhausted: Cannot allocate memory
  9. 针对ASP.NET MVC的SEO优化笔记
  10. linux bash profile bash_profile 小结