SQL——SQL语句总结(6)

常用函数

常用函数分为单行函数和聚合函数

1.数学函数

数学函数主要用来处理数值数据,主要的数学函数有:绝对值函数、三角函数(包括正弦函数、余弦函数、正切函数、余切函数等)、对数函数、随机数函数等。有错误产生时,数学函数将会返回空值null。

 

函数名 描述 实例 结果
pi() 返回圆周率的值 seelct pi(); 3.141593
abs(x) 返回x的绝对值 select abs(-1005); 1005
sqrt(x) 返回非负数 x 的二次方根 select sqrt(29); 5.385164807134504
pow(x,y) 返回 x 的 y 次乘方 select pow(9, 5); 59049
ceiling(x) 返回大于 x 的最小整数值 select ceiling(1005.5); 1006
floor(x) 返回小于 x 的最大整数值 select floor(1005.6); 1005
mod(x,y) 返回x/y的模(余数) select mod(10.52,3); 1.52
round(x,y)

返回参数 x 的四舍五入的

有 y 位小数的值

select round(10.05,2);

10.05
truncate(x,y) 返回数字 x 截断为 y 位小数的结果 select truncate(1.00591,4); 1.0059
rand()

返回0到1内的随机值,可以通过提供一个参数(种子)使rand()随机数生成一个指定的值

select rand();

select rand(10);

0.9522263807730995

0.6570515219653505

2.字符串函数

字符串函数主要用来处理数据库中的字符串数据,MySQL 中字符串函数有:计算字符串长度函数、字符串合并函数、字符串替换函数、字符串比较函数】查找指定字符串位置函数等。

函数名 描述 示例 结果
char_length(str) 返回字符串str所含的字符个数 select char_length('你好 xz'); 5
length(str) 返回字符串str中的字符的字节长度 select length('你好 xz'); 9
ascii(char) 返回字符的ASCII码值 select ascii('z'); 122
concat(s1,s2..,sn) 将s1,s2...,sn连接成一个字符串 select concat('I ', 'am ' ,'fine'); I am fine
concat_ws(sep,s1,s2...,sn) 将s1,s2...,sn连接成一个字符串,并用sep字符间隔 select concat_ws('/', '2020','12','4'); 2020/12/4
insert(str,x,y,instr) 将字符串str从第x位置开始的y个字符长的字符串替换为字符串instr,返回结果 select insert('you me',3,3,'and');  yoande
 lcase(str) 或 lower(str) 返回字符串str中所有字符改变为小写后的结果 

 select lcase('china');

select lower('china');

 china

china

ucase(str) 或 upper(str)   返回字符串str中所有字符改变为大写后的结果 

 select ucase('china');

select upper('china');

CHINA

CHINA 

left(str, x)  返回将字符串str中最左边的 x 个字符   select left('hello', 2);  he
right(str, x) 返回将字符串str中最右边的 x 个字符  select right('hello', 2); lo
ltrim(str) 从字符串 str 中去掉开头的空格

select         ltrim('  seanxiao')

seanxiao
instr(str,substr) 返回字符串 substr 在字符串 str 第一个出现的位置 select instr('seanxiao', 'ao'); 7
position(substr in str) 返回字符串 substr 在字符串 str 第一个出现的位置 select position('i' in 'seanxiao'); 6
reverse(str) 返回颠倒字符串str的值 select reverse('oaixnaes'); seanxiao
strcmp(s1, s2) 比较字符串s1和s2,所有字符均相同,返回0;第一个小于第二个,返回-1,其他返回1 select strcmp('xz', 'ab'); 1
trim(str) 去除字符串首部和尾部的所有空格 select trim(' me '); me

lpad(st, len, padstr)

rpad(st, len, padstr)

用字符串 padstr 填补 st 左或右端,直到字符串长度为len

select lpad('seanxiao', 10, '*' );

select rpad('seanxiao', 10, '*');

**seanxiao

seanxiao**

substring(str, n, len) 从 str 字符串的第 n 个位置截取 len 长度个字符。n 若为负值,则从末尾倒数

select substring('seanxiao', -2, 3);

ao
replace(str, s1, s2) 使用字符串s2替代字符串 str 中所有的字符串s1 select replace('xxx.mysql.com', 'x', 'w'); www.mysql.com
space(n) 返回一个由 n 个空格组成的字符串 select concat('*', space(6), '*'); *      *

3.日期和时间函数 

日期和时间函数主要用来处理日期和时间值,一般大额日期函数除了使用 date 类型的参数外,也可以使用 datetime 或者 timestamp 类型的参数,但是忽略这些值的时间部分。相同的,以 time 类型值为参数的函数,可以接受 timestamp 类型的参数,但会忽略日期部分,许多日期函数可以同时接受数字和字符串类型的两种参数。

函数名 描述 实例 结果
curdate()或current_date()或current_date 返回当前的日期

select current_date();

current_date();

2020-12-04| 2020-12-04

curtime()或current_time() 返回当前的时间 select curtime(),current_time(); 10:48:22| 10:48:22
now() 返回当前时间和日期 select now(); 2020-12-04 10:49:39
date_add(date,interval int keyword) 返回日期date加上间隔时间的结果(int 必须按照关键字进行格式化)

select date_add(current_date,interval 6 month);

2021-06-04
dayofweek(date) 返回date所代表的一个星期中的第几天(1~7) select dayofweek('1991-10-05'); 7
dayofmonth(date) 返回date是一个月的第几天(1~31) select dayofmonth('1999-09-15'); 15
dayofyear(date)

返回date是一年的第几天(1~366)

select dayofyear('1991-10-05'); 278
monthname(date) 返回date是几月(按英文名返回) select monthname('1991-10-05'); October
dayname(date) 返回date的星期名 select dayname(current_date); Friday
weekday(date) 返回日期date是星期几(0 =星期一,以此类推) select weekday(current_date); 4
week(date) 返回日期date为一年中第几周(0~53) select week(current_date); 48
year(date) 返回日期date的年份(1000~9999) select year(current_date); 2020
hour(time) 返回日期time的最小值(0~23) select hour(current_time); 11
date_format(date, fmt) 依照指定的fmt格式格式化日期date值 select date_format('2020-12-04', '%w %m %y'); 5 12 20

date_format(date, fmt)函数中的fmt字符串中可用的格式

格式 描述
%a 缩写星期名
%b 缩写月名
%c 月,数值
%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%f 微秒
%H 小时(00-23)
%h 小时(01-12)
%I 小时(01-12)
%i 分钟,数值(00-59)
%j 年的天(001-366)
%k 小时(0-23)
%l 小时(1-12)
%M 月名
%m 月,数值(00-12)
%p AM或PM
%r 时间,12-小时(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 时间,24-小时(hh:mm:ss)
%U 周(00-53)星期日是一周的第一天
%u 周(00-53)星期一是一周的第一天
%V 周(01-53)星期日是一周的第一天,与%X使用
%v 周(01-53)星期一是一周的第一天,与%x使用
%W 星期名
%w 周的天(0=星期天,6=星期六)
%X 年,其中的星期日是周的第一天,4位,与%V使用
%x 年,其中的星期一是周的第一天,4位,与%v使用
%Y 年,4位
%y 年,2位

4.转换函数

使用类型转换函数可以在各种类型数据之间转换数据类型。MySQL中常有的转换函数有cast() 和 convert() 函数,可用来获取一个类型的值,并产生另一个类型的值。

  1)cast(value as type),即cast(xxx as 类型)

  2)convert(value, type) ,即convert(xxx, 类型)

5.聚合函数

select子句的表达式中可以包含聚合函数。聚合函数常常用于对一组值进行计算,然后返回单个值。

函数名 描述 实例
avg(all | distinct | col) 返回指定字段的平均值 select avg(age) from stu;
count(all | distinct | col | *) 返回指定字段中非null值的个数 select count(*) from stu;
min(all | distinct | col) 返回指定字段的最小值 select min(age) from stu;
max(all | distinct | col) 返回指定字段的最大值 select max(age) from stu;
sum(all | distinct | col) 返回指定字段所有的所有值 select sum(score) from stu;
group_concat(col) 返回由属于一组的字段值连接组合而成的结果 select class, group_concat(name) from stu group by class;

6.条件判断函数

条件判断函数也称为流程流程函数,根据满足的条件的不同,执行相关的流程。

    (1) if(expr,v1,v2)函数

    如果表达式expr是true(expr != 0 and expr != null ),if() 的返回值为v1;否则返回值为v2。if() 的返回值为数值或字符串值,具体情况是其所在语境而定。

    (2) ifunll(v1,v2)函数

    假如 v1 不为 null,则 ifnull() 的返回值为 v1;否则其返回值为 v2。ifnull() 的返回值是数字或字符串,具体情况取决于其所在的语境。

 

posted @ 2020-12-04 19:05  nyfq  阅读(126)  评论(0编辑  收藏  举报