• SQL 小技巧 2



    ------查询倒数第4位是a的员工信息    

    where last_name like '%a___'
    --------查询没填email的员工信息 

       where email is null
    -----------查询1998年入职的员工信息  

     where hire_date between '1-1月-98' and '31-12月-98' where hire_date >= '1-1月-98' and hire_date<='31-12月-98'

    一、单行函数:运行在单条数据上,有一条数据函数就会被执行1次。
        1、字符串相关
            length(str)--获取字符串的长度
                --查询员工的姓的长度
                select last_name,length(last_name) from employees
                --查询长度是5位,并且第3位是a的员工
                select * from employees where length(last_name)=5 and last_name like '__a%'
                --显示字符串abcdefg的长度
                select length('abcdefg') from employees
                --dual 哑表,没有实际意义,只是为了select语句的语法完整性
                select length('abcdefg') from dual
            substr(str,begin,length)--从str中截取子串,从begin(下标从1开始)开始取长度为length个字符
                select substr('abcdefg',1,3) from dual
            lower(str)/upper(str)    --转小写、大写
                --查询姓中包含L的员工
                select * from employees where upper(last_name) like '%L%'
            concat(s1,s2)--字符串连接,等价于 s1 || s2
                --查询员工的全名
                select last_name || first_name from employees
                select concat(last_name, first_name) from employees
                select last_name || ' ' || first_name from employees
                select concat(concat(last_name, ' '), first_name) from employees
        2、数学相关
            mod(n1, n2) --求余,n1 % n2
                --查询编号是奇数的员工
                select * from employees where mod(employee_id, 2) = 1
            round(num, length)--四舍五入,对num四舍五入到小数点后length位
                --查询员工的日平均工资,保留2位小数
                select salary, round(salary/22 ,2) as 日平均工资 from employees
        3、日期相关
            sysdate --获取系统的当前日期时间
                select sysdate from dual
            to_char(date, '日期格式字符串')【重点】
                --按指定日期格式,把日期类型转成字符串类型
                --获取日期的不同部分,如年、月、日期
                日期格式字符串,包含如下字符:yyyy--4位年
                                              yy--2位年
                                              mm--月份
                                              dd-日期
                                              hh24--24时
                                              mi-分钟
                                              ss--秒
                                              d--星期(1-7)
                                              day-星期(星期天/Sunday)
                --按年月日时分秒显示当前日期
                select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual
                --查看员工的入职时间
                select hire_date from employees
                select to_char(hire_date, 'yyyy-mm') from employees
                --查看员工的入职月份
                select to_char(hire_date, 'mm') from employees
                --查看7月份入职的员工
                select * from employees where to_char(hire_date,'mm')=7
                --查看本月入职的员工
                select to_char(sysdate,'mm') from dual
                select * from employees where to_char(hire_date,'mm')=to_char(sysdate,'mm')
                --查看上个月入职的员工
                select * from employees where to_char(hire_date,'mm')=(to_char(sysdate,'mm')-1)--OK(有缺陷,如果是1月份-1后就变成0)
            add_months(date, num)--对月份进行加减,num为负,则为减
                --查看上个月入职的员工
                select add_months(sysdate,-1) from dual
                select * from employees where to_char(hire_date,'mm')=to_char(add_months(sysdate,-1),'mm')
                --查看昨天入职的员工
                select sysdate-1 from dual
            last_day(date)--获取date的最后1天
                select last_day(sysdate) from dual
            trunc(date, '日期格式字符串')--按指定的格式截断日期
                select trun(sysdate,'mm') from dual--获取当前月份的第1天
                select trun(sysdate,'yyyy') from dual--获取年的第1天
            to_date(str,'日期格式字符串')--根据给定的格式,把字符串转成日期
                select to_date('2011-5-6','yyyy-mm-dd') from dual
        4、处理null  nvl(n1,n2)--如果n1是null则取值n2,否则取值n1(n1==null? n2 : n1)
            --查看员工的年薪(月薪*12+奖金)
            select salary, salary*12, salary*12+commission_pct from employees    --ERROR
            select salary, salary*12, salary*12+nvl(commission_pct,0) from employees

  • 相关阅读:
    PfSense基于BSD的软件防火墙的安装、配置与应用
    Puppet安装与配置简介(附视频教程)
    Vmware ESX5i 环境下部署Windows Storage Server 2008 R2
    揭秘TPM安全芯片技术及加密应用
    WebRTC实现网页版多人视频聊天室
    Oracle-BPM安装详解
    Specifying the Code to Run on a Thread
    Processes and Threads
    64、ORM学员管理系统-----联合查询
    拦截导弹
  • 原文地址:https://www.cnblogs.com/liuruipeng/p/7922051.html
Copyright © 2020-2023  润新知