1. 字符函数
- length(获取字节数,UTF-8编码中 一个汉字占3个字节,GBK编码中一个汉字占2个字节)
select length('abc');
#结果:3
select length('张三');
#结果:6
select concat('a', 'b', 'c');
#结果:abc
- concat_ws(从二个参数开始拼接字符串,中间以第一个字符隔开)
select concat_ws(',','a', 'b', 'c');
#结果:a,b,c
select upper('aBc');
#结果:ABC
select lower('AbC');
#结果:abc
- substr / substring(截取字符串)
select substr('abcd', 2);
#结果:bcd
select substr('abcd', 2, 1);
#结果:b
select substring('abcd', 2);
#结果:bcd
select substring('abcd', 2, 1);
#结果:b
- instr(返回子串索引位置,从1开始,没有返回0)
select instr('abcd', 'bc');
#结果:2
select instr('abcd', 'e');
#结果:0
select trim(' abc ');
#结果:abc
select trim('d' from 'dabcd');
#结果:abc
select ltrim(' abc ');
#结果:abc
select rtrim(' abc ');
#结果: abc
select left('abc', 1);
#结果:a
select right('abc', 2);
#结果:bc
select lpad('abc', '5', '-');
#结果:--abc
select rpad('abc', '5', '-');
#结果:abc--
select replace('abc', 'b', '-');
#结果:a-c
select repeat('abc', 2);
#结果:abcabc
- strcmp(比较字符串,相同返回0,左侧大返回1,右侧大返回-1)
select strcmp('abc', 'abc');
#结果:0
select strcmp('abcd', 'abc');
#结果:1
select strcmp('abc', 'abcd');
#结果:-1
select reverse('abc');
#结果:cba
- locate(返回子串在字符串中的其实位置,从1开始)
select locate('bc', 'abcdef');
#结果:2
2. 数学函数
select abs(-1);
#结果:1
- round(四舍五入,负数时对绝对值四舍五入后加负号)
select round(1.2);
#结果:1
select round(-1.2);
#结果:-1
select round(1.6);
#结果:2
select round(-1.6);
#结果:-2
select round(3.1415926, 2);
#结果:3.14
select round(1234.5678, -2);
#结果:1200
select ceil(1.2);
#结果:2
select ceil(-1.2);
#结果:-1
select floor(1.2);
#结果:1
select floor(-1.2);
#结果:-2
select rand();
#结果:0.3811951860610351
select ceil(rand() * 90 + 10);
#结果:27
select ceil(rand() * 900 + 100);
#结果:985
select pi();
#结果:3.141593
select truncate('3.1415926', 2);
#结果:3.14
select mod(10, 3);
#结果:1
select mod(-10, 3);
#结果:-1
select pow(2, 3);
#结果:8
select power(2, 3);
#结果:8
select greatest(6, 5, 2, 9, 1);
#结果:9
select least(6, 5, 2, 9, 1);
#结果:1
3. 日期函数
select now();
#结果:2020-07-08 19:41:08
select curdate();
#结果:2020-07-08
select curtime();
#结果:19:42:15
- year / month / day / hour / minute / second(返回当前日期时间指定部分)
select year(now());
#结果:2020
select month(now());
#结果:7
select day(now());
#结果:8
select hour(now());
#结果:19
select minute(now());
#结果:43
select second(now());
#结果:23
select str_to_date('07/08 2020', '%c/%d %Y');
#结果:2020-07-08
select date_format('2020-07-08', '%Y年%m月%d日');
#结果:2020年07月08日
select datediff('2020-07-08', '2020-05-08');
#结果:61
select date_add('2020-07-08 23:59:59', interval 1 second);
#结果:2020-07-09 00:00:00
select date_add('2020-07-08 23:59:59', interval 1 day);
#结果:2020-07-09 23:59:59
select date_sub('2020-07-08 23:59:59', interval 1 second);
#结果:2020-07-08 23:59:58
select date_sub('2020-07-08 23:59:59', interval 1 day);
#结果:2020-07-07 23:59:59
4. 条件函数
select if(2 > 1, 'yes', 'no');
#结果:yes
- ifnull(判断是否为null,否则返回第二个字符)
select ifnull('abc', 'is null');
#结果:abc
select ifnull(null, 'is null');
#结果:is null
select
case
when 1 < 2 then
'lt'
when 1 > 2 then
'gt'
else
'eq'
end
#结果:lt
5. 其他函数
select version();
#结果:8.0.20
select database();
#结果:testdb
select user();
#结果:root@127.0.0.1
select connection_id();
#结果:1173
select charset('abc');
#结果:utf8
select conv(15, 10, 2);
#结果:1111
select conv(1111, 2, 8);
#结果:17