文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SQL 基础之单行函数(七)

2024-04-02 19:55

关注

单行 SQL 函数有如下几个分类:


函数的使用原来说白了就是在函数使用过程中加入符合定义的参数,然后执行函数就能输出结果值了。

SQL 基础之单行函数(七)

单行函数和多行函数的区别:


单行函数:

操作数据对象

接受函数返回一个结果

只对一行进行变换

每行返回一个结果

可以转换数据类型,计算,格式化

可以嵌套

参数可以是列、值或表达式

function_name [(arg1, arg2,...)]


SQL 基础之单行函数(七)



字符函数:


1、大小写转换函数:LOWER、UPPER、INITCAP


这些函数转换字符串的大小写:

        函数结果
LOWER('SQL Course')结果全部是小写
UPPER('SQL Course')结果全部是大写
INITCAP('SQL Course')结果首字符大写

1.1、例如显示员工Walsh的员工编号,并且名字为小写:

select lower(last_name),employee_id from employees where last_name='Walsh';

SQL 基础之单行函数(七)


1.2、例如显示员工Walsh的工资,并且名字为大写:

select upper(first_name),salary from employees where first_name='Kevin';

SQL 基础之单行函数(七)


1.3、显示Kevin的last_name 、工资job_id 首字母大写

select initcap(job_id), last_name,salary from employees where first_name='Kevin';

SQL 基础之单行函数(七)


1.4、从员工表中检索FIRST_NAME和LAST_NAME值,并且FIRST_NAME包含字符串“li”

select first_name,last_name from employees where lower(first_name) like '%li%'; 

SQL 基础之单行函数(七)


2、字符处理函数:CONCAT、SUBSTR、LENGTH、INSTR、LPAD | RPAD、TRIM、REPLACE

名字函数结果 
连接函数CONCAT('Hello', 'World')HelloWorld
字符截取函数SUBSTR('HelloWorld',1,5)截取从1-5个字符Hello
字符串统计长度LENGTH('HelloWorld')10 
查找字符位置函数INSTR('HelloWorld', 'W')
前填充函数LPAD(salary,10,'*')*****24000
后填充函数
RPAD(salary, 10, '*')24000*****
替换函数

REPLACE ('JACK and JUE','J','BL')

BLACK and BLUE 
字符剪切函数TRIM('H' FROM 'HelloWorld')elloWorld 


2.1、将员工的first_name和last_name拼接在一起显示,并查找工资大于5000的员工信息

select concat(first_name,last_name) name, employee_id,salary from employees  where salary>5000 order by salary desc;

SQL 基础之单行函数(七)


2.1.1、单独制造一个列信息,显示为****** infor的显示员工工资大于10000的信息

select concat('*******','information') infor , job_id ,salary from employees where salary > 10000;

SQL 基础之单行函数(七)

2.1.2、由下图可知,concat函数只能拼接两列字符信息,到第三列就开始报错了

SQL 基础之单行函数(七)


2.2.1、截取员工名字前3个字母,并找到工资大于10000的员工名字

select substr(first_name,1,3) fname, salary from employees where salary >10000;

SQL 基础之单行函数(七)


2.2.2、查看工资大于10000员工的名字长度

select length(last_name),salary from employees where salary >10000;

SQL 基础之单行函数(七)


2.3.1、查找Ellen用户 l在第几个位置。

select instr(first_name,'l'),salary from employees where first_name='Ellen';

SQL 基础之单行函数(七)


2.3.2、查找job_id 从第4位截取为REP的。

select instr(first_name,'a'),salary,job_id from employees where substr(job_id,'4') ='REP';

SQL 基础之单行函数(七)


2.4.1、将工资设置为5位长度,不够的用*号前填充

select first_name,lpad(salary,5,'*') from employees;

SQL 基础之单行函数(七)


2.5.1、查找工资显示10位,不足的用*号后填充

select first_name,rpad(salary,10,'*') from employees;

SQL 基础之单行函数(七)


2.6.1、将员工名字开头为B的变成JC开头。

select replace(first_name,'B','JC'),salary from employees order by first_name;

SQL 基础之单行函数(七)


2.7.1、将员工姓名首字母为A的,去掉A

select trim('A' from first_name),salary from employees order by first_name;

SQL 基础之单行函数(七)


2.8 查看job_id第四位开始是REP的,查看first_name a在第几位置

select employee_id,concat(first_name,last_name)  Name,job_id,length(first_name),instr(first_name,'a') "contains 'a'?"

from employees where substr(job_id,4) = 'REP';

SQL 基础之单行函数(七)


2.9、公司计划给每名员工印制含有员工姓名的纪念品,为保持整体美观程度,现在要求员工的全名在

16个字符内。当员工的FIRST_NAME和LAST_NAME的合并长度超过15个字符时,显示员工学名,。员

工的名称由FIRST_NAME的首字母和LAST_NAME的前14个字符组成。

【解题思路】首先确定where条件限制FIRST_NAME和LAST_NAME的合并长度超过15的员工进行过

滤,然后在SELECT 子句后面使用字符函数进行处理。

  select first_name,last_name,substr(first_name,1,1)||' '||substr(last_name,1,14) format_name from employees where length(first_name)+length(last_name) >15;

SQL 基础之单行函数(七)


数值函数

函数示例结果
ROUND:四舍五入到到指定的十进制值
ROUND(45.926, 2)45.93
TRUNC:将数字截尾取整TRUNC(45.926, 2)45.92
MOD:返回余数
MOD(1600, 300)100

这里使用DUAL来测试,这是一个‘伪表’,可以用来测试函数和表达式


1、测试round函数三种方式

select round(45.9234,2),round(45.923,0),round(45.923,-1) from dual;

select round(45.9259,2),round(45.623,0),round(45.923,-1) from dual;

通过上面两个语句测试可知:

第一个为在小数点右侧截取2位,如果第三位是5就四舍五入

第二个为标准小数点右侧第一位进行四舍五入

第三个为小数点左侧进行四舍五入,不够进变成0,比如round(43.923,-1),结果变成40

SQL 基础之单行函数(七)

SQL 基础之单行函数(七)


2、测试trunc函数三种方式

SELECT TRUNC(45.923,2), TRUNC(45.923),TRUNC(45.923,-1) FROM DUAL;

SQL 基础之单行函数(七)

SELECT TRUNC(45.923,2), TRUNC(45.923),TRUNC(39.923,-1) FROM DUAL;

SQL 基础之单行函数(七)

SELECT TRUNC(45.923,2), TRUNC(45.923),TRUNC(39.923,-2) FROM DUAL;

SQL 基础之单行函数(七)

命令分别为指定截取位数2位,默认截取小数点位右侧删除掉,删除掉小数点左侧第一位变成0

当为-3的时候就表示截取3位,直接变成0


3、测试mod函数查询销售部门的工资与5000取余数

select last_name,salary,mod(salary,5000) from employees where job_id='SA_REP';

SQL 基础之单行函数(七)


日期函数

  Oracle内部使用数字存储日期: 世纪,年,月,日,小时,分钟,秒

  默认的日期显示格式为DD-MON-RR

– 可以只指定年的后两位,允许存储21世纪日期在21世纪中

– 同样,允许存储20世纪的日期在21世纪中


RR 日期格式

当前年
指定日期RR格式YY格式
199527-OCT-9519951995
199527-OCT-1720171917
200127-OCT-1720172017
200127-OCT-9519952095


使用 SYSDATE  函数

SYSDATE 函数返回:

  日期

  时间

select  sysdate from dual;

SQL 基础之单行函数(七)


日期的算术运算

 在日期上加上或减去一个数字结果仍为日期。


1、查询90部门的员工都入职多少个星期了

select last_name,(sysdate-hire_date)/7 as weeks from employees where department_id=90;

SQL 基础之单行函数(七)

2、查询30部门的员工都入职多少个月了

select first_name,(sysdate-hire_date)/30 month from employees where department_id=30;

SQL 基础之单行函数(七)


日期操作函数


函数含义结果
MONTHS_BETWEEN ('01-SEP-95','11-JAN-94')两个日期相差的月数 19.6774194
ADD_MONTHS  ('06-MAR-17',1)向指定日期中加上若干月数06-APR-17
NEXT_DAY ('01-SEP-95','FRIDAY')指定日期的下一个日期

08-SEP-95

LAST_DAY ('01-SEP-95')本月的最后一天30-SEP-95
假设当前为  SQL 基础之单行函数(七)
ROUND (SYSDATE,'MONTH')日期四舍五入01-MAR-17
ROUND (SYSDATE ,'YEAR')日期四舍五入01-JAN-17
TRUNC (SYSDATE ,'MONTH')日期截断01-MAR-17
TRUNC (SYSDATE ,'YEAR')日期截断01-JAN-17

感觉上面这几个不太对,现在还没明白,回头再说


1、查询截至01-JAN-2012已入职100月的员工信息包含EMPLOYEES,LAST_NAME和HIRE_DATE字段

select last_name,hire_date,months_between('01-JAN-2012',hire_date) day from employees where months_between('01-JAN-2012',hire_date) >100;

SQL 基础之单行函数(七)


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯