mysql的一些函数

mac2022-06-30  25

MYSQL函数

-----字符函数-----

char_length(s): 返回字符串的长度。character_length(s)也是一样的功能。

CONCAT(s1,s2...sn):拼接字符串。

CONCAT_WS(x, s1,s2...sn):也是拼接字符串,但是每个字符串之间会有一个分隔符,x。

FIELD(s,s1,s2...):返回字符串s在字符串列表中的位置。

FIND_IN_SET(s1,s2):返回字符串s1在s2中的匹配的位置。,例如select find_in_set('j',"jason,j");返回结果为2。

FORMAT(x,n):函数可以将数字 x 进行格式化 "#,###.##", 将 x 保留到小数点后 n 位,最后一位四舍五入。例如:SELECT FORMAT(250500.5634, 2); -- 输出 250,500.56

INSERT(s1,x,len,s2):字符串 s2 替换 s1 的 x 位置开始长度为 len 的字符串。例如:字符串 s2 替换 s1 的 x 位置开始长度为 len 的字符串。

LOCATE(s1,s):从字符串 s 中获取 s1 的开始位置,例如:SELECT LOCATE('st','myteststring'); -- 5。

LCASE(s):转为小写。LOWER(s)也是一样的。

UCASE(s):转为大写。UPPER(s)也一样。

LEFT(s,n):返回字符串s的前n个字符。例如:SELECT LEFT('runoob',2) -- ru。

RIGHT(s,n):返回字符串s的后n个字符。例如:SELECT RIGHT('runoob',2) -- ob

LPAD(s1,len,s2):在字符串 s1 的开始处填充字符串 s2,使字符串长度达到 len。例如:SELECT LPAD('abc',5,'xx') -- xxabc。

RPAD(s1,len,s2):在字符串 s1 的结尾处添加字符串 s2,使字符串的长度达到 len,例如:SELECT RPAD('abc',5,'xx') -- abcxx。

LTRIM(s):去掉字符串 s 开始处的空格。

RTRIM(s):去掉字符串 s 结尾处的空格。

TRIM(s):去掉头和尾的空格。

MID(s,n,len):从字符串 s 的 start 位置截取长度为 length 的子字符串,同 SUBSTRING(s,n,len)。例如:SELECT MID("RUNOOB", 2, 3) AS ExtractString; -- UNO

SUBSTR(s, start, length):从字符串 s 的 start 位置截取长度为 length 的子字符串。

SUBSTRING(s, start, length):从字符串 s 的 start 位置截取长度为 length 的子字符串。

POSITION(s1 IN s):从字符串 s 中获取 s1 的开始位置,例如:SELECT POSITION('b' in 'abc') -- 2

REPEAT(s,n):将字符串 s 重复 n 次,例如:select repeat('j',3)---jjj。

REPLACE(s,s1,s2):将字符串 s2 替代字符串 s 中的字符串 s1。SELECT REPLACE('abc','a','x') --xbc

REVERSE(s):将字符串s的顺序反过来,例如:SELECT REVERSE('abc') -- cba。

SPACE(n):返回 n 个空格。

STRCMP(s1,s2):比较字符串 s1 和 s2,如果 s1 与 s2 相等返回 0 ,如果 s1>s2 返回 1,如果 s1<s2 返回 -1,例如:SELECT STRCMP("runoob", "runoob"); -- 0

SUBSTRING_INDEX(s, delimiter, number):返回从字符串 s 的第 number 个出现的分隔符 delimiter 之后的子串。 如果 number 是正数,返回第 number 个字符左边的字符串。 如果 number 是负数,返回第(number 的绝对值(从右边数))个字符右边的字符串。

例如:

SELECT SUBSTRING_INDEX('a*b','*',1) -- a SELECT SUBSTRING_INDEX('a*b','*',-1) -- b SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('a*b*c*d*e','*',3),'*',-1) -- c

-----mysql数字函数-----

abs(s):返回绝对值。

AVG(expression):返回平均值。expression 是一个字段

ceil(x):返回大于或等于 x 的最小整数,也就是天花板数。SELECT CEIL(1.5) -- 返回2。CEILING(x)也一样。

FLOOR(x):返回小于或等于 x 的最大整数,也就是地板数。SELECT FLOOR(1.5) -- 返回1 

COUNT(expression):计数统计。

n DIV m :整除,n 为被除数,m 为除数。SELECT 10 DIV 5; -- 2。

EXP(x) :返回e的x次方。

GREATEST(expr1, expr2, expr3, ...):返回列表中的最大值。SELECT GREATEST(3, 12, 34, 8, 25); -- 34

LEAST(expr1, expr2, expr3, ...):返回列表中的最小值。SELECT LEAST(3, 12, 34, 8, 25); -- 3。

MAX(expression):求最大值。

MIN(expression):求最小值。

MOD(x,y):返回 x 除以 y 以后的余数。SELECT MOD(5,2) -- 1

PI():圆周率。

POW(x,y):返回 x 的 y 次方。POWER(x,y)也是一样的。SELECT POW(2,3) -- 8

RAND():返回 0 到 1 的随机数。SELECT RAND() --0.93099315644334

ROUND(x):返回离 x 最近的整数,要四舍五入。SELECT ROUND(1.23456) --1

TRUNCATE(x,y):返回数值 x 保留到小数点后 y 位的值(与 ROUND 最大的区别是不会进行四舍五入)SELECT TRUNCATE(1.23456,3) -- 1.234

SQRT(x):返回平方根。SELECT SQRT(25) -- 5

SUM(expression):求和。

-------------mysql 日期函数--------------------

ADDDATE(d,n):计算起始日期 d 加上 n 天的日期.例如:SELECT ADDDATE("2017-06-15", INTERVAL 10 DAY);->2017-06-25

SUBDATE(d,n):减去n天后的日期。

ADDTIME(t,n):时间 t 加上 n 秒的时间,

SELECT ADDTIME('2011-11-11 11:11:11', 5) ->2011-11-11 11:11:16 (秒)

SUBTIME(t,n):减去n秒的时间。

curdate():返回当前日期。CURRENT_DATE()也一样。

CURRENT_TIME:返回当前时间。CURTIME()也一样。

LOCALTIME():返回当前日期和时间。LOCALTIMESTAMP()

CURRENT_TIMESTAMP():返回当前日期和时间,

SELECT CURRENT_TIMESTAMP() -> 2018-09-19 20:57:43

DATE():从日期或日期时间表达式中提取日期值,

SELECT DATE("2017-06-15"); -> 2017-06-15

DATEDIFF(d1,d2):计算日期 d1->d2 之间相隔的天数。

SELECT DATEDIFF('2001-01-01','2001-02-02') -> -32

DATE_FORMAT(d,f):按表达式 f的要求显示日期 d

SELECT DATE_FORMAT('2011-11-11 11:11:11','%Y-%m-%d %r') -> 2011-11-11 11:11:11 AM

DATE_SUB(date,INTERVAL expr type):函数从日期减去指定的时间间隔。select date_sub(now(),interval 2 day)--->返回当前日期的两天前的日期。

DAY(d):返回日期值 d 的日期部分,例如select day(now()) 返回当前日期的天数。

DAYNAME(d):返回日期 d 是星期几,如 Monday,Tuesday。

MONTHNAME(d):返回日期当中的月份名称,如 Janyary。

DAYOFWEEK(d):日期 d 今天是星期几,1 星期日,2 星期一,以此类推

DAYOFMONTH(d):计算日期 d 是本月的第几天。

DAYOFYEAR(d):计算日期 d 是本年的第几天

EXTRACT(type FROM d):从日期 d 中获取指定的值,type 指定返回的值。例如:select extract(day from now())。从当前时间中拉取天数。

LAST_DAY(d) :返回指定日期的最后一天。例如:select last_day(now())--->2019-08-31

MAKEDATE(year, day-of-year):基于给定参数年份 year 和所在年中的天数序号 day-of-year 返回一个日期,例如:

SELECT MAKEDATE(2017, 3); -> 2017-01-03

MAKETIME(hour, minute, second):组合时间,参数分别为小时、分钟、秒。

SELECT MAKETIME(11, 35, 4); -> 11:35:04

MINUTE(t):获取分钟值。

SECOND(t):获取秒钟值。

MONTH(d):返回日期d中的月份值,1 到 12。

NOW():返回当前日期和时间。

sysdate():返回当前日期和时间。

PERIOD_ADD(period, number):为 年-月 组合日期添加一个时段,SELECT PERIOD_ADD(201703, 5); --->201708。

PERIOD_DIFF(period1, period2):返回两个时段之间的月份差值,SELECT PERIOD_DIFF(201710, 201703);--->7.

QUARTER(d):返回日期d是第几季节,返回 1 到 4

STR_TO_DATE(string, format_mask):将字符串转变为日期。SELECT STR_TO_DATE("August 10 2017", "%M %d %Y");--->2017-08-10

TIMEDIFF(time1, time2):计算时间差值。

WEEK(d):计算日期 d 是本年的第几个星期,范围是 0 到 53.WEEKOFYEAR(d)也是一样的。

WEEKDAY(d):日期 d 是星期几,0 表示星期一,1 表示星期二

YEARWEEK(date, mode):返回年份及第几周(0到53),mode 中 0 表示周天,1表示周一,以此类推 例如:select yearweek(now())。---201932

mysql高级函数

case 表达式

​ when 条件 then 结果1

​ ····

​ else 结果

end

CASE 表示函数开始,END 表示函数结束。如果 condition1 成立,则返回 result1, 如果 condition2 成立,则返回 result2,当全部不成立则返回 result,而当有一个成立之后,后面的就不执行了。

CAST(x AS type):转换数据类型。

SELECT CAST("2017-08-29" AS DATE); -> 2017-08-29

COALESCE(expr1, expr2, ...., expr_n):返回参数中的第一个非空表达式(从左向右)

CONNECTION_ID():返回服务器的连接数

IF(expr,v1,v2):如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2。

ifnull(v1,v2):如果 v1 的值不为 NULL,则返回 v1,否则返回 v2。

NULLIF(expr1, expr2):比较两个字符串,如果字符串 expr1 与 expr2 相等 返回 NULL,否则返回 expr1

转载于:https://www.cnblogs.com/jasonboren/p/11361838.html

最新回复(0)