zoukankan      html  css  js  c++  java
  • Oracle笔记(三)单行函数

    -函数 函数像一个黑盒子一样(看不到里边的构造),有参数返回值,可以为我们完成一定的功能。

    -单行 这种函数会对结果中的每一行计算一次,每行返回一个结果,单行概念区别于分组函数。

    单行函数主要分为以下五类:字符函数、数字函数、日期函数、转换函数、通用函数;

    一、字符型函数

    ---字符处理-大小写转换

    例子:写一个SQL,将'I love Sql'转换成全大写,全小写和首字母大写的形式。

    SELECT UPPER ('I love Sql'),LOWER('I love Sql'),INITCAP('I love Sql')

    FROM dual;

    -Oracle之中有一点比较麻烦,即使要验证字符串,也必须编写完整的SQL语句,所以在Oracle数据库之中为了用户查询方便,所以专门提供了一个“dual”的虚拟表

    -dual是sys用户下的一张表,dual表中的数据没有任何意义,它的作用是补全SQL语句

    -作用 在不知道大小写的时候便于查询

    ---CONTACT(参数1,参数2)-字符串连接

    ||可以连接两个以上的字符串,CONTACT只能连接两个么

    SELECT CONTACT ('I love',' Sql')

    FROM dual;

    -函数的嵌套,理论上,单行函数可以嵌套无限多层,取决于计算机的计算能力,内存CPU是否足够大

    -嵌套的执行顺序,最里层向外,依次执行,里边的结果要作为外边的参数

    SELECT CONTACT (CONTACT('I',' love'),' Sql')

    FROM dual;

    ||工作中一般用||连接,这里是为了讲解嵌套的概念

    ---SUBSTR(源字符串,m,n) (取子串)返回源字符串中从第m个字符开始的n个字符

    -如果省略n,则截取剩余字符串至末尾

    -m也可以是负数,泽从右往左数

    -SQL从1开始算,空格也算一位

    例子:要求截取每个雇员姓名的后三个字母

    SELECT ename,SUBSTR(ename,-3)

    FROM emp;

    ---LENGTH(字符串)

    例子:查询出每个雇员姓名的长度

    SELECT ename,

    LENGTH(ename)

    FROM emp;

    ---INSTR(源字符串,字串,m,n)-返回子串在源字符串中,从第m个字符开始,第n次出现的位置

    -如果没有找到子串的位置,则会返回0

    -m,n都可以省略,默认是1

    例子:查询emp表中名字至少含有一个E的员工信息,不用like,不用通配符,怎么写。

    SELECT *

    FROM emp

    WHERE INSTR(ename,'E')>0;

    ---Lpad(源字符串,n,子串)-在源字符串的右面用子串填充成n长度

    SECECT LPAD('sql',9,'*')

    FROM dual;

    ---TRIM(字符 FROM 源字符)-截去源字符串头(尾)所指定的字符

    SELSCT TRIM('L' FROM 'LEVELA')

    FROM dual;

    SELSCT TRIM(BOTH'L' FROM 'LEVELA')

    FROM dual;

    SELSCT TRIM(LEADING'L' FROM 'LEVELA')

    FROM dual;

    SELSCT TRIM(TRAILING'L' FROM 'LEVELA')

    FROM dual;

    -both是默认的

    -很少用trim函数这种功能,常用第二种算法

    ---TRIM(字符串)-截去头尾的空格

    SELECT TRIM(’          d         tom                     ')

    FROM dual;

    -截掉头尾空格的方法,常用在web开发,用户登录设置密码的时候

    -用于习惯加空格,这里可以用trim把头尾空格截掉,然后再验证

    ---REPLACE(源字符串,s,t)-把s换成t

    SELECT REPLACE (' a b c d','a','e')

    FROM dual;

    思考:在数据库中计数全部从1开始,某些参数也可以设置为负数,表示由后指定的点开始

    二、数字函数

    ---ROUND(数字,n)-将给定的数字四舍五入到小数点后n位 

    ---TRUNC(数字,n)-将给定的数字截断到小数点后n位

    ---MOD(m,)-返回m除以n后的余数 

    -对熟悉应用不是很多

    -扩展

    ---ABS(数字)-取绝对值

    SELECT ABS(-5)

    FROM dual;

    三、日期函数

    -SYSDATE-返回(服务器)系统时间(返回的是服务器端的时间,还是客户端的时间,看表在哪存着,表在服务器端保存,返回的是服务器的时间)

    SELECT SYSDATE

    FROM dual;

    -做外包的时候要注意服务器可能不在中国,要转换

    ---MONTHS_BETWEEN(日期1,日期2)-返回两个日期之间相差的月数,较大在前,较小在后,返回后是整数,越晚越大)

    例子:查询emp表中员工今天到此为止工作了多少个月了

    SELECT ename,hiredate,MONTHS_BETWEEN(SYSDATE,hiredate)

    FROM emp;

    例子:计算自己的年龄,并且四舍五入到小数点后两位

    SELECT ROUND(MONTHS_BETWEEN(SYSDATE,'1-1月-200')/12,2) AGE

    FROM dual;

    ---ADD_MONTHS(日期,n)-返回n个月之后的日期

    -如果给你日期是某个月的最后一天,则结果也是对应月的最后一天

    -给1月30号,31号,返回的都是2月最后一天

    ---NEXT_DAY(日期,'星期X'|n)-返回给定日期后一周内的下一个星期X的日期

    -一周内

    -1代表星期日,2代表星期一,以此类推...

    ---LAST_DAY(日期):求出指定日期的最后一天

    例子:求出本月的最后一天日期

    SELECT LAST_DAY(SYSDATE)

    FROM dual;

    ---EXTRACT(year|month|day from 日期)

    SELECT EXTRACT(day from SYSDATE)

    FROM dual;

    -基本不用了,EXTRACT是Oracle 9i版本提供的

    -使用有限制,只能抽取日月年的信息

    四、类型转换函数

    1.隐式类型转换

    -不建议使用饮食类型转换的原因

    --可读性差

    --隐式类型转换会降低运行效率

    --Oracle不承诺会在下一个版本中不改变隐式类型转换的规则

    2.显示类型转换-函数

    日期和字符可以相互转换,数字和字符可以相互转换

    ---TO_CHAR(日期|数字,'格式字符串’)

    例子:将系统日期转换成字符串,格式2015/7/23

    SELECT TO_CHAR(SYSDATE,'yyyy/mm/dd')

    FROM dual;//结果多了个0,这个0叫做前导零

    -怎么去掉前导零-fm

    SELECT TO_CHAR(SYSDATE,'fmyyyy-mm-dd')

    FROM dual;

    例子:将系统时间转换成字符串,格式xx:xx:xx

    SELECT TO_CHAR(SYSDATE,'HH:MI:SS')

    FROM dual;

    -----------------------------------------------------未完待续--------------------------------------------------------------------------------------

  • 相关阅读:
    Codeforces 813F Bipartite Checking 线段树 + 并查集
    Codeforces 263E Rhombus (看题解)
    Codeforces 173E Camping Groups hash
    Codeforces 311C Fetch the Treasure 取模意义下的最短路 (看题解)
    R 培训之 Table
    Docker命令详解
    Celery的实践指南
    Using Celery with Djang
    PostgreSQL
    改时区参考
  • 原文地址:https://www.cnblogs.com/tongx123/p/4671928.html
Copyright © 2011-2022 走看看