网站建设知识
mysql常用函数
2025-07-22 09:55  点击:0

一:数学函数

SELECT GREATEST (2,3,4),GREATEST (1.1,3.2);

SELECT LEAST (2,3,4),LEAST (1.1,3.2);

FLOOR(X)

返回不大于X的最大整数值。

mysql> SELECT FLOOR(1.23);

-> 1

mysql> SELECT FLOOR(-1.23);

-> -2

LOG10(X)

返回X的基数为10的对数。

mysql> SELECT LOG10(2);

-> 0.30102999566398

mysql> SELECT LOG10(100);

-> 2

mysql> SELECT LOG10(-100);

-> NULL

POW(X,Y) , POWER(X,Y)

返回X 的Y乘方的结果值。

mysql> SELECT POW(2,2);

-> 4

mysql> SELECT POW(2,-2);

-> 0.25

ROUND(X) ROUND(X,D)

返回参数X, 其值接近于最近似的整数。在有两个参数的情况下,返回 X ,其值保留到小数点后D位,而第D位的保留方式为四舍五入。若要接保留X值小数点左边的D 位,可将 D 设为负值。

mysql> SELECT ROUND(-1.23);

-> -1

mysql> SELECT ROUND(-1.58);

-> -2

mysql> SELECT ROUND(1.58);

-> 2

mysql> SELECT ROUND(1.298, 1);

-> 1.3

mysql> SELECT ROUND(1.298, 0);

-> 1

mysql> SELECT ROUND(23.298, -1);

-> 20

二:聚合函数

SELECT * FROM core;

SELECT COUNT(*)FROM core;

SELECT MIN(math),MAX(physics) FROM core;

SELECT AVG(math) FROM core;

SELECT SUM(math) FROM core;

三:字符串函数

ASCII(str)

返回值为字符串str 的最左字符的数值。假如str为空字符串,则返回值为 0 。假如str 为NULL,则返回值为 NULL。 ASCII()用于带有从 0到255的数值的字符。

mysql> SELECT ASCII('2');

-> 50

BIT_LENGTH(str)

返回值为二进制的字符串str 长度。

mysql> SELECT BIT_LENGTH('text');

-> 32

CHAR(N,... [USING charset])

CHAR()将每个参数N理解为一个整数,其返回值为一个包含这些整数的代码值所给出的字符的字符串。NULL值被省略。

mysql> SELECT CHAR(77,121,83,81,'76');

-> 'MySQL'

mysql> SELECT CHAR(77,77.3,'77.3');

-> 'MMM'

ConCAT(str1,str2,...)

返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。或许有一个或多个参数。如果所有参数均为非二进制字符串,则结果为非二进制字符串。如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如: SELECT ConCAT(CAST(int_col AS CHAR), char_col)

mysql> SELECT ConCAT('My', 'S', 'QL');

-> 'MySQL'

mysql> SELECT ConCAT('My', NULL, 'QL');

-> NULL

mysql> SELECT ConCAT(14.3);

-> '14.3'

INSTR(str,substr)

返回字符串 str 中子字符串的第一个出现位置。这和LOCATE()的双参数形式相同,除非参数的顺序被颠倒。

mysql> SELECT INSTR('foobarbar', 'bar');

-> 4

mysql> SELECT INSTR('xbar', 'foobar');

-> 0

LEFT(str,len)

返回从字符串str 开始的len 最左字符。

mysql> SELECT LEFT('foobarbar', 5);

-> 'fooba'

LENGTH(str)

返回值为字符串str 的长度,单位为字节。一个多字节字符算作多字节。这意味着对于一个包含5个2字节字符的字符串, LENGTH() 的返回值为 10, 而 CHAR_LENGTH()的返回值则为5。

mysql> SELECT LENGTH('text');

-> 4

四:时间日期函数

ADDDATE(date,INTERVAL expr type)ADDDATE(expr,days)

当被第二个参数的INTERVAL格式激活后, ADDDATE()就是DATE_ADD()的同义词。相关函数SUBDATE() 则是DATE_SUB()的同义词。对于INTERVAL参数上的信息,请参见关于DATE_ADD()的论述。

mysql> SELECT DATE_ADD('1998-01-02',INTERVAL 31 DAY);

-> '1998-02-02'

mysql> SELECT ADDDATE('1998-01-02',INTERVAL 31 DAY);

-> '1998-02-02'

若 days 参数只是整数值,则 MySQL 5.1将其作为天数值添加至 expr。

mysql> SELECT ADDDATE('1998-01-02', 31);

-> '1998-02-02'

ADDTIME(expr,expr2)

ADDTIME()将 expr2添加至expr 然后返回结果。 expr 是一个时间或时间日期表达式,而expr2 是一个时间表达式。

mysql> SELECT ADDTIME('1997-12-3123:59:59.999999',

-> '1 1:1:1.000002');

-> '1998-01-02 01:01:01.000001'

mysql> SELECT ADDTIME('01:00:00.999999','02:00:00.999998');

-> '03:00:01.999997'

五:流程控制函数

前面为空,返回后面,后面为空返回前面

SELECTIFNULL(1,10),IFNULL(NULL,3),IFNULL(3,NULL);

判断值是否相等,相等返回空,不等返回第一个

SELECTNULLIF(1,1),NULLIF('a','c'),NULLIF(3+1,2+2);

条件为真返回第一个,为假返回第二个

SELECTIF(1<10,2,3),IF(1>10,'true','false');

输出结果go

SELECT CASE 'green'

WHEN 'red' THEN 'stop'

WHEN 'green' THEN 'go'

END;

输出结果n/a

SELECT CASE 9

WHEN 1 THEN 'a'

WHEN 2 THEN 'b'

ELSE 'n/a'

END;

输出结果:ok

SELECT CASE

WHEN (2+2)=4 THEN 'ok'

WHEN (2+2)<>4 THEN 'not ok'

END AS STATUS;