• SQL 中的函数


    一、字符串类型
    1、CHARVARCHAR2
      1、表示字符类型,用于存储字符信息,如:姓名、职业、住址等
      2、CHAR长度固定的字符串,name CHAR(20);name='hehe';20
      3、VARCHAR2变长的字符串,name VARCHAR2(20);name='hehe';4

    2、字符编码
      1、默认以字节为单位,可指定为字符
      2、CHAR(10)等价于CHAR(10 BYTE);指定字符为单位 CHAR(10 CHAR);
      3、每个英文字符占用一个字节,每个汉字根据初始编码的不同会占用2~4字节

    3、最大长度
      1、CHAR 最大长度为2000字节,最多保存2000个字母,1000个汉字
      2、VARCHAR2 最大长度为4000字节,最多保存4000个字母,2000个汉字
      3、CHAR 可以不指定长度默认为1,VARCHAR2 必须要指定长度

    4、LONG 和 CLOB 类型
      1、LONG 是 VARCHAR2 的加长版,变长的存储字符串,最多达到2G的字符串
      但每个表中只能有一个LONG类型,而且不能当作主键,不能建立索引,不能出现在查询一条件中
      2、CLOB存储定长的字符串,最大长度可达到4G
      3、Oracle 建议在开发中使用LONG和CLOB替代CHAR和VARCHAR2

    二、字符串函数
    1、CONCAT 和 ||
      1、CONCAT (str1,str2) 返回两个字符串连接后的结果,如果连接的CHAR类型的字符串还要包括后面的空格。
      2、||与CONCAT 的功能是等价的
    2、LENGTH
      1、用于返回字符串的长度
      2、在计算CHAR 类型时会包括后面的空格,在VARCHAR2时只计算字符的长度
      3、UPPERLOWERINITCAP
      UPPER功能是把字符串全部转换成大写
      LOWER功能是把字符串全部转换成小写
      INITCAP功能是把字符串中的所有单词的首字母大写
    4、TRIMLTRIMRTRIM
      TRIM(char from str)功能是从str的开头截取一个字符
      LTRIM(str1,str2)功能是从str1的左边截取str2
      RTRIM(str1,str2)功能是从str1的右边截取str2
    5、LPADRPAD
      LPAD(str1,n,str2)显示n个宽度的str1,不够则用str2的字符补充到str1的左边
      RPAD(str1,n,str2)显示n个宽度的str1,不够则用str2的字符补充到str1的右边
    6、SUBSTR
      SUBSTR(str,m,n) 从字符str的第m个位置开始截取n个字符
      m=0时也是从头开始截取,m负值时则从末尾截取
      n省略时默认截取到末尾
    7、INSTR
      INSTR(str1,str2)从str1中查找并返回str2首次出现的位置,不存在则返回0

    三、数值类型
    注意:p的值最大为38,如果p省略,则默认为38
    1、NUMBER(p)用来表示整数
    p表示数据的位数,可以用来存储年龄、编号、次数等
    2、NUMBER(p,s)用来表示带小数点的
    常用于存储金额、工资等

    四、数值函数
    1、ROUND
      1、ROUND(val,s)用于四舍五入,s表示要保留的小数点后的位数
      2、s必须是整数,否则自动取整
      3、如果s为负数,则从小数点前s位四舍五入,但数据不会被截取
      4、s值缺省时默认为0
    2、TRUNC
      1、TRUNC(val,s)用于截取,s表示要保留的小数点后的位数
      2、如果s为负数,则把小数点前的s位置为0
    3、MOD
      1、MOD(val,m)使用m对val求余
      2、m如果为0则直接返回val的值
    4、CEIL
      CEIL(val)意思是天花板,就是val四舍五入的最大值
      FLOOR(val) 意思是地板,意思是舍取小数点后面的数据

    五、日期类型
    1、DATE日期类型
      1、使用了7个字节来表示日期
        1byte 世纪+100
        2byte 年
        3byte 月
        4byte 天
        5byte 小时+1
        6byte 分+1
        7byte 秒+1
      2、可以表示的日期范围是公元前4712年1月1日到公元9999年12月31日
    2、TIMESTAMP日期类型
      1、使用11个字节来表示日期
      2、前7个与DATE一致,后4个字节用来存储纳秒

    六、日期关键字
    1、SYSDATE
      1、功能是获取当前日期,它不是函数,本质上是Oracle内部的一个关键字
      2、返回当前的系统时间,可以精确到秒
      3、默认显示的格式:DD-MON-RR
    2、SYSTIMESTAMP
      1、是一个内部函数,返回当前系统的日期和时间,精确到纳秒
    3、TO_DATE
      1、TO_DATE(str,fm)将字符串str按照fm的格式转换成日期类型的格式
        yy 2位数表示的年份
        yyyy 4位数表示的年份
        mm 2位数表示的月份
        mon 简拼表示的月份
        month 全拼表示的月份
        dd 2位数表示的天
        dy 周的缩写
        hh24 24小时制时间
        hh|hh12 12小时制时间
        mi 分钟
        ss 秒
    4、TO_CHAR
        TO_CHAR 可以把其它数据类型转换成字符串
        TO_CHAR(date,fm) 把日期的类型转换成fm的格式
    5、LAST_DAY
        1、LAST_DAY(date)获取日期所在月的最后一天
        2、在按照以自然月为业务逻辑或者安排月末活动时使用
    6、ADD_MONTHS
      1、ADD_MONTHS(date,i)在date的基础上加上i月后的日期
      2、i可以是小数但会取整
      3、i的值可以是负的,日期则减去i月
    7、MONTHS_BETWEEN
      1、MONTHS_BETWEEN(d1,d2) 计算两个日期之间相隔多少个月
      2、如果d2时间比d1晚则会得到负数
      3、如果两日期都是整月才能得到整数,否则都是带小数点的数

    8、NEXT_DAY
      1、NEXT_DAY(date,char)返回date下一个周几的日期
      2、在中文环境下可以使用'星期一',在英文环境下需要英文单词的全拼
      3、为了避免麻烦可以使用1-7表示,1星期日 7星期六
    9、LEASTGREATEST
      1、LEAST(d1,d2,d3,...)返回日期列表中的最小值
      2、GREATEST(d1,d2,d3,...)返回日期列表中的最大值
    七、NULL的含义
    1、NULL是数据库中非常重要的一个数据,也叫空值
    2、在插入数据时,某些字段如果没设置值则取值为NULL
    3、在创建表时可以设置某些字段的值不能为NULL
    4、任何数据类型都可以为空

    八、空值的操作
    1、插入空值
      1、显式的插入空值,赋值时对任何类型的数据都可以赋值为NULL
      2、隐式的插入空值,对字段不赋值时该字段的值就为NULL
    2、更新成空值
    UPDATE 表名 SET 字段=NULL where bool
    3、空值的条件查询
      1、空值不等于任何值,不能直接判断
      select* from HEHE1111 where sex is NULL

    九、空值相关的函数
    1、NVL
      1、NVL(val1,val2)把空值数据转换成非空的
      2、如果val1不为空,则返回val1,如果val1为空则返回val2
      3、val1和val2可以是任意类型,但它们的类型必须一致
    2、NVL2
      1、NVL(val1,val2,val3)也是把空值数据转换成非空的
      2、如果val1为空,则返回val2,如果val2为空则返回val3











  • 相关阅读:
    系统设计实现
    反编译
    android layout analyze
    2016.7.20-notes
    如何认识刘昊然?
    leetcode-中等-队列-二叉树的层次遍历
    leetcode-简单-栈-逆波兰表达式
    leetcode-简单-栈-有效的括号
    队列-链式队列
    队列-循环队列-顺序存储
  • 原文地址:https://www.cnblogs.com/xiwen2017/p/9634911.html
Copyright © 2020-2023  润新知