mysql - 函数

select version();
-- 8.0.18


##################################MySQL 字符串函数##################################
-- 返回字符串 s 的字符数
select CHAR_LENGTH('abcdef') as `length`; #6
select CHAR_LENGTH('哈哈') as `length`; #2
select CHARACTER_LENGTH('abcdef') as `length`; #6
select CHARACTER_LENGTH('哈哈') as `length`; #2

-- CONCAT(s1,s2...sn)
-- 字符串 s1,s2 等多个字符串合并为一个字符串
select concat('one', '-', 'two', '-', 'three') as `合并字符串`; #one-two-three

-- CONCAT_WS(x, s1,s2...sn)
-- 同 CONCAT(s1,s2,...) 函数,但是每个字符串之间要加上 x,x 可以是分隔符
select concat_ws('-', 'one', 'two', 'three') as `合并字符串`; #one-two-three

-- LOCATE(s1,s)
-- 从字符串 s 中获取 s1 的开始位置【特别注意位置是从1开始的】
select locate('st', 'verygondstring') as `开始位置`; #9

-- 将字符串 s 的所有字母变成大或小写字母
select lcase('abCDeF') as `全变小写`; #abcdef
select ucase('abCDeF') as `全变大写`; #ABCDEF
select lower('abCDeF') as `全变小写`; #abcdef
select upper('abCDeF') as `全变大写`; #ABCDEF

-- LEFT(s,n)
-- 返回字符串 s 的前 n 个字符
select left('abcdef', 2) as `结果`; #ab
select right('阖家安康很快就暗访', 2) as `结果`; #暗访

-- LTRIM(s)
-- 去掉字符串 s 开始处的空格
select ltrim(' sdhja ') as `去掉开头的空格`; #[sdhja ]
select rtrim(' sdhja ') as `去掉结尾的空格`; #[ sdhja]
select trim(' sdhja ') as `去掉首尾空格`; #[sdhja]

-- REPLACE(s,s1,s2)
-- 将字符串 s2 替代字符串 s 中的字符串 s1
select replace('abcdef', 'cd', '1234') as `替换指定字符`; #ab1234ef

-- SUBSTR(s, start, length)
-- 从字符串 s 的 start 位置截取长度为 length 的子字符串
select substr('abcdef', 2, 2) as `截取`; #bc
select substr('abcdef', 2) as `从第2个开始截取之后的全部`; #bcdef
select substring('哈师大的阿萨德', 2, 2) as `截取`; #师大
select substring('哈师大的阿萨德', 2) as `从第2个开始截取之后的全部`; #师大的阿萨德

-- FORMAT(x,n)
-- 函数可以将数字 x 进行格式化 "#,###.##", 将 x 保留到小数点后 n 位,最后一位四舍五入。
select format('23456.6789', 2) as `value`; #23,456.68
select format(23456.6789, 2) as `value`; #23,456.68

 

##################################MySQL 数字函数##################################
-- 向上取整
select ceil(1.5) as `result`; #2
select ceiling(1.3) as `result`; #2

-- 向下取整
select floor(1.6) as `result`; #1

-- 四舍五入
select round(1.4) as `result`; #1
select round(1.5) as `result`; #2

-- 集合函数
-- avg(`expression`)
-- count(`expression`)
-- max(`expression`)
-- min(`expression`)
-- sum(`expression`)

-- 返回 0 到 1 的随机数 
select rand();


##################################MySQL 日期函数##################################
select now() as `当前日期和时间`; #yyyy-MM-dd HH:mm:ss

select sysdate() as `当前日期和时间`; #yyyy-MM-dd HH:mm:ss

select curdate() as `当前日期`; #yyyy-MM-dd

select curtime() as `当前时间`; #HH:mm:ss

select adddate(now(), 1) as `加n天`;

select addtime(now(), 1000) as `加n秒`;

select date('2020/10/10 12:12:12') as `取日期部分`; #yyyy-MM-dd

select time('2020/10/10 12:12:12') as `取时间部分`; #HH:mm:ss

select datediff('2020-10-10', '2019-10-10') as `相隔天数`;

select dayname(now()) as `星期几`; #返回日期 d 是星期几,如 Monday,Tuesday

select dayofweek(now()) as `星期几`; #日期 d 今天是星期几,1 星期日,2 星期一,以此类推

select dayofyear(now()) as `本年第几天`;

select last_day(now()) as `本月最后一天`; #yyyy-MM-dd

select quarter(now()) as `第几个季节`; #1 ~ 4

select year(now()) as `年值`;

select month(now()) as `月值`; #1 ~ 12

select day(now()) as `日值`;

select hour(now()) as `时值`;

select minute(now()) as `分钟值`;

select second(now()) as `秒值`;

select sec_to_time(1234) as `以秒为单位的时间s转时分秒格式`; #HH:mm:ss

select time_to_sec('20:20:20') as `将时间 t 转换为秒`;

select timediff('2020-10-10 12:12:12', '2020-10-10 13:12:12') as `计算时间差值`; #[-]HH:mm:ss


##################################MySQL 高级函数##################################

set @param = 4;
select 
	case @param 
		when 1 then 'one' 
		when 2 then 'two' 
		else 'six' 
	end as result1,
	case
		when @param = 1 then 'one'
		when @param = 2 then 'two'
		else 'five'
		end as result2;
		
-- CAST(x AS type)
-- 转换数据类型
select cast('2017-09-09' as date) as result;

-- 返回唯一的连接 ID
select connection_id();

-- IF(expr,v1,v2)
-- 如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2。
select if(1=2, 1, 2) as result; 

-- IFNULL(v1,v2)
-- 如果 v1 的值不为 NULL,则返回 v1,否则返回 v2。
select ifnull(null, 1) as result;

-- ISNULL(expression)
-- 判断表达式是否为 NULL, 为null返回1,否则返回0
select isnull('') as result;

-- 	返回最近生成的 AUTO_INCREMENT 值
select last_insert_id();

-- NULLIF(expr1, expr2)
-- 比较两个字符串,如果字符串 expr1 与 expr2 相等 返回 NULL,否则返回 expr1
select nullif(25, 25) as result;

  

posted @ 2020-10-10 17:43  gygtech  Views(110)  Comments(0Edit  收藏  举报