函数类似于方法,函数的通常概念是可以单独存在的个体单元,也是最小的单元组成。
函数一般都是封装代码用来方便多次调用,或增加主程序代码的可读性。
如果放入数值为因子,因子一样则两组结果一致。
第二个参数意为保留小数点的位数。
这种情况下会变为0,如果为-2则变变为 100,满足四舍五入的五则为200
该函数为截位,不会产生四舍五入。
负数直接为0;
先运算括号里的函数,再运算括号外的函数。
#字符串函数
#ASCIi() 获取字符的ASCII表值,CHAR_LENGTH和LENGTH()返回字符串的长度,第一个是按照字节返回长度
SELECt ASCIi('A'),CHAR_LENGTH('HELLO'),CHAR_LENGTH('我们'),
LENGTH('HELLO'),LENGTH('我们')
FROM DUAL;
#字符串连接函数
SELECt CONCAt(emp.last_name,' worked for ',mgr.`last_name`) AS "结果集"
FROM employees emp JOIN employees mgr
WHERe emp.`manager_id` = mgr.`employee_id`;
#带有分隔符号的连接函数
SELECt CONCAT_Ws('-','Hello','Java','Hello','Spring MVC...')AS "Hello Demo";
#字符串的索引是从1开始的
#从2开始到3的数据替换成 aaaa
#第二个函数意为将字符串中的ll替换成mmm
#第二个函数的数据如果不存在,则替换失败,数据还是原来的数据,不会报错
SELECT INSERT("helloworld",2,3,'aaaaa'),REPLACE('hello','ll','mmm') AS "结果集" FROM DUAL;
#大写、小写函数 如果目标已大写或小写则无视
SELECt UPPER('hello java'),LOWER('HELLO JAVASCRIPT') FROM DUAL;
#类似于截取,不过分了截取的方向
SELECt LEFt('hello',2),RIGHt('hello',3);
#占位补充对齐函数
#LPAD:右对齐效果
#RPAD:左对齐效果
SELECT e.`employee_id`,e.last_name,LPAd(e.`salary`,'10','*')
FROM employees e;
SELECt e.`employee_id`,e.last_name,RPAD(e.`salary`,'10','*')
FROM employees e;
#字符串函数
#去除首尾空格
SELECt CONCAt('---',TRIm(' h e lo '),'***') FROM DUAL;
#去除左边空格
SELECt CONCAt('---',LTRIm(' h e lo '),'***') FROM DUAL;
#去除右边空格
SELECt CONCAt('---',RTRIm(' h e lo '),'***') FROM DUAL;
#去除开始或结尾的参数
SELECt CONCAt('---',LTRIm(' h e lo '),'***') ,
TRIm('o' FROM 'oohello')
FROM DUAL;
#重复四次参数,产生空格 #如果左边比右边大则返回 1 相同返回0 小于返回-1
SELECt REPEAT('hello',4),LENGTH(SPACe(5)),STRCMP('abc','abd') FROM DUAL;
#截取字符串 如果不给予参数则默认全部截取(第一个参数的位置开始)
SELECt SUBSTr('hello',2,2)FROM DUAL;
#locate 获取参数1在参数2出现的位置 无视大小写 如果没有匹配到则返回0
SELECt LOCATE('l','hello') FROM DUAL;
#返回指定参数位置的字符串内容
SELECt ELT(2,'Hello Java','Hello Java Script','Java JQuery','Hello MySQL','Hello JBDC')FROM DUAL;
#寻找该字符串在字符串列表中首次出现的位置
SELECt FIELD('Hello MySQL','Hello Java','Hello Java Script','Java JQuery','Hello MySQL','Hello JBDC') FROM DUAL;
#寻找该字符串在字符串列表中首次出现的位置 其中s2是一串以逗号分开的字符串
SELECt FIND_IN_SET('Hello MySQL','Hello Java,Hello Java Script,Java JQuery,Hello MySQL,Hello JBDC') FROM DUAL;
#反转字符串 比较两个字符串,如果相等返回null 否则返回第一个参数
SELECt REVERSe('依天洛'),NULLIF('乐正绫','洛天依'),NULLIF('乐正绫','乐正绫')FROM DUAL;
日期和时间函数
#日期和时间类型函数 #获取日期时间 #获取日期,时间,当前系统日期和时间,获取世界标准日期时间 SELECt CURDATE(),CURTIME(),NOW(),UTC_DATE(),UTC_TIME();
#日期与时间戳的转换
SELECT UNIX_TIMESTAMP(),UNIX_TIMESTAMP('2022-6-15 20.09:13'),
FROM_UNIXTIME(1653912553),FROM_UNIXTIME(1655294953)
FROM DUAL;
#获取月份、星期、星期数、天数等函数
SELECt YEAR(CURDATE()),MONTH(CURDATE()),DAY(CURDATE()),
HOUR(CURTIME()),MINUTE(NOW()),SECOND(SYSDATE())
FROM DUAL;
SELECt MONTHNAME("2012-8-27"),DAYNAME('2011-8-27'),WEEKDAY('2020-10-26'),
QUARTER(CURDATE()),WEEK(CURDATE()),DAYOFYEAR(NOW()),DAYOFMONTH(NOW()),
DAYOFWEEK(NOW()) FROM DUAL;
日期操作函数
#获取当前秒位 SELECt EXTRACT(SECOND FROM NOW()) FROM DUAL; #获取当前日期 SELECt EXTRACT(DAY FROM NOW()) FROM DUAL; #返回天和分钟值 SELECt EXTRACT(HOUR_MINUTE FROM NOW()) FROM DUAL; #返回天和小时 SELECt EXTRACT(DAY_HOUR FROM NOW()) FROM DUAL;时间和秒钟转换的函数
TIME_TO_SEC(time):将time转换为秒并返回结果值,转换公式为:小时X3600+分钟X60+秒
SEC_TO_TIME(seconds):将seconds描述转换为包含小时,分钟和秒的时间
#时间和秒钟转换函数
SELECt TIME_TO_SEC(CURTIME()),SEC_TO_TIME('75761')
FROM DUAL;
计算日期和时间函数
#计算日期和时间函数
#相当于加了一年
SELECt DATE_ADD(NOW(),INTERVAL 1 YEAR) FROM DUAL;
#相当于减了一年
SELECt DATE_ADD(NOW(),INTERVAL -1 YEAR) FROM DUAL;
#SUB本身就是代表减 这里相当于减10年
SELECt DATE_SUB(NOW(),INTERVAL 10 YEAR) FROM DUAL;
SELECt DATE_ADD(NOW(),INTERVAL 1 DAY) AS "col1",
DATE_ADD('2021-10-21 23:32:12',INTERVAL 1 SECOND)AS "col2",
ADDDATE('2021-10-21 23:32:12',INTERVAL 1 SECOND)AS "col3",
DATE_ADD('2021-10-21 23:32:12',INTERVAL '1_1' MINUTE_SECOND) AS "col4",
DATE_ADD(NOW(),INTERVAL -1 YEAR) AS "col5",#可以是负数
DATE_ADD(NOW(),INTERVAL '1_1' YEAR_MONTH) AS "col6"#需要单引号
FROM DUAL;
#代码不全
p is 35 35:19



