-- 注释
-- 一.基础函数
-- 1.lower() 转换为全小写
select 'ABC',lower('ABC');
-- 2.upper() 转换为全大写
select 'abc',upper('abc');
-- 3.length() 获取长度(字节数)
select dname,length(dname)from dept;
-- 4.substr()截取子串(数据库中的字符下标从1开始,截取时含头含尾,
-- 若超出范围则默认截取到最后;
select dname,substr(dname,1,6)from dept;
-- 5.concat()拼接字符串,
select concat(dname,'(',loc,')') from dept;
-- 练习:将 'abc' 的首字母大写
select concat(upper(substr('abc',1,1)),concat(substr('abc',2,3)));
-- 6.replace() 替换字符串
select dname,replace(dname,'人','人类')from dept;
select dname,replace(dname,'怪','精')from dept;
select replace(deptno,1,'一') from dept;
select replace(replace(deptno,1,'一'),2,'二') from dept;
select replace(replace(replace(deptno,1,'一'),2,'二'),3,'三' )from dept;
-- 7.round() 四舍五入 /ceil() 向上取整 floor() 向下取整
select round(3.14),ceil(3.14),floor(3.14);
-- 8.uuid() 通用于唯一标识码
select uuid();
-- 9. \ 转义字符
select 'abce\'d';
-- 二 .日期函数
-- 1.now() 获取当前系统时间(年月日 时分秒)
select now(),curdate(),curtime(),sysdate();
-- oracle 中获取系统当前时间,dual 为内置伪表(虚伪的表)
-- select sysdate from dual;
-- 2.year() ,month(),day(),hour(),minute(),second()
-- 分别获取年 月 日 时 分 秒
select hiredate,year(hiredate),month(hiredate),day(hiredate) from emp;
select hour(now()),minute(now()),second(now());
-- 3.date_fromat() 日期转字符串
select date_format(now(),'%Y-%m-%d');
select date_format(now(),'%Y-%m-%d %H-%i-%s');
-- last_day() 获取每月最大日期(即最后一天)
select last_day(now());
select ename,hiredate,last_day(hiredate) from emp;
-- 获取每月的第一天最后一天
select date_format(hiredate,'%Y-%m-01'),last_day(hiredate) from emp;
-- 5.str_to_date() 字符串转日期
select str_to_date('2021-10-20','%Y-%m-%d');
-- 三 自定义函数
-- 无参函数(无函数体)
-- return 后加具体的返回值 和 returns后定义返回值类型
create function f1() returns int return 100;
-- 调用函数
select f1();
-- 2.有参函数(有函数体)
delimiter $$
-- delimiter 定义结束符
create function f2(name varchar(20)) returns varchar(20)
begin
-- 函数体开始 declare s varchar(20);
-- declare 声明变量
select job from emp where ename=name into s;
return s;
end $$
-- 函数体结束
delimiter ;
select f2('孙悟空');
delimiter $$
create function f2(name varchar(20)) returns varchar(20)
begin
declare s varchar(20);
select job from emp where ename=name into s;
return s;
end $$
delimiter ;
--调用函数
select f2('孙悟空');
--删除函数
drop function f1;
drop function if exists f2;