常用函数
1. 字符串函数
1.连接字符串
SELECT CONCAT('a','b','c')
-- abc
2.转换为大写
SELECT UPPER('abc')
-- ABC
3.转换为小写
SELECT LOWER('ABC')
-- abc
4.计算字符串长度(utf-8 一个汉字为3个字节,gbk为2个字节)
SELECT LENGH('abcde')
-- 5
5.返回左侧字符
SELECT LEFT('abcdefg',3)
-- abc
6.返回右侧字符串
SELECT RIGHT('abcdefg',3)
-- efg
7.去除空格(去除左侧空格LTRIM,去除右侧空格RTRIM)
SELECT TRIM(' str ')
-- str
8.对字符串进行左侧填充 LPAD(s,len,pad)使用pad对字符串s进行左填充,直至长度达到len
SELECT LPAD('1','5','0')
-- 00001
9.对字符串进行右侧填充
SELECT RPAD('1','5','0')
-- 10000
10.重复字符串指定次数
SELECT REPEAT('y',5)
-- yyyyy
11.将字符串中指定字符替换
SELECT REPLACE('straaa','a','b')
-- strbbb
12.比较两个字符串 strcmp(x,y)如果相同返回0,x小于y返回1,x大于y返回-1
SELECT STRCMP('a','a') STRCMP('a','b') STRCMP('b','a')
-- 0 -1 1
13.截取指定位置且指定位数的字符串
SELECT SUBSTRING('abcd',3,2)
-- cd
14.替换字符串 INSERT(s,x,y,str)字符串从x位置开始y个字符替换成str字符
SELECT INSERT('abcd',3,2,'LL')
-- abLL
15.字符串颠倒顺序
SELECT REVERSE('abc')
-- cba
16.返回字符第一次出现的索引 (mysql是从1开始计算的)
SELECT INSTR('这是什么','是')
-- 2
2. 数字函数
1.向上取整,返回大于该数字的最大整数
SELECT CEIL(10.1)
-- 11
2.向下取整,返回小于该数字的最大整数
SELECT FLOOR(10.1)
-- 10
3.返回0到1的随机数
SELECT RAND()
-- 0.132915854
4.保留指定位小数
SELECT TRUNCATE(15.1366666,2)
-- 15.13
5.四舍五入(负数计算方式,绝对值四舍五入)
SELECT ROUND(1.5) ROUND(-1.5)
--2
6.取余
SELECT MOD(10,3) MOD(10,-3)
-- 1 1
7.返回符号(负,零,正返回结果依次为-1,0和1)
SELECT SIGN(-5) SIGN(0) SIGN(-5)
-- -1 0 1
8.次方根
SELECT POW(3,3) POW(-2,3)
-- 27 -8
3. 日期函数
1.返回当前系统日期+时间
SELECT NOW()
-- 2020-08-11 18:26:30
2.返回当前系统日期,不包含时间
SELECT CURDATE()
-- 2020-08-11
3.返回当前时间
SELECR CURTIME()
-- 18:26:30
4.获取指定的部分年、月、日(YEAR/MONTH/DAY)
SELECT YEAR(NOW())
-- 2020
5.将字符通过指定的格式转换为日期
SELECT STR_TO_DATE('08-11 2020','%c-%d %Y')
-- 2020-08-11
6.将日期转换为指定字符
SELECT DATE_FORMAT(NOW(),'%年%c月%d日')
-- 2020年08月11日
7.两个日期天数之差
SELECT DATEDIFF(NOW(),'2020-08-10')
-- 1
8.时间戳
SELECT UNIX_TIMESTAMP()
-- 1594005672
9.
4. 其他函数
1.查看mysql版本
SELECT VERSION()
5.7.31
2.查看当前数据库
SELECT DATABASE()
test_base
3.查看当前用户
SELECT USER()
root@localhost
4.if函数
SELECT IF(10<5,'大','小')
小
5.CASE 表达式
SELECT
CASE[字段,值]
WHEN 判断条件1
THEN 希望得到的值1
WHEN 判断条件2
THEN 希望得到的值2
ELSE 前面条件都没有满足情况下得到的值
END
FROM
table_name
---------------
SELECT t.id,t.tname
CASE t.type
WHEN 1 THEN '努力赚钱'
WHEN 2 THEN '小康生活'
WHEN 3 THEN '可以娶媳妇'
WHEN 4 THEN '可以买车'
WHEN 5 THEN '可以买房'
ELSE '土豪'
END AS '生活状态'
FROM TEST t
自定义函数
创建一个简单函数
-- 如果有这个函数,就删除
drop function if exists hello;
-- 创建一个无参的函数
create function hello ()
-- 设置函数的返回类型
returns varchar (255)
begin-- 函数头
-- 中间的是函数体
return '一个简单的mysql函数'; -- 函数的返回值
end; -- 函数结尾
——————————
drop function if exits hello;
-- a,b两个参数
create function hello(a varchar(20),b varchar(20)) returns varchar(255)
BEGIN
--declare声明参数,default设置参数的默认值
declare x varchar(255) default 'x';
declare y varchar(255) default 'b';
declare c varchar(255) default '2020-08-11';
declare d varchar(255);
--给参数赋值
SET d=concat(x,a,b,y,c);
return d;
END;
SELECT hello('a','b')
-- xabb2020-08-11