22 2021

mysql的常用函数整理笔记(一)

本文将MySQL的部分函数分类并汇总,以便以后用到的时候可以随时查看, 主要包括MySQL函数包括数学函数、字符串函数。  

MySQL数据库中提供了很丰富的函数,常用的函数整理如下

1.数学函数

1.1 ABS(x) 返回x的绝对值 返回-1的绝对值:SELECT ABS(-1) -- 返回1

1.2 ACOS(x) 求x的反余弦值(参数是弧度)  SELECT ACOS(0.25);

1.3 ASIN(x) 求反正弦值(参数是弧度) SELECT ASIN(0.25);

1.4 ATAN(x) 求反正切值(参数是弧度) SELECT ATAN(2.5);

1.5 ATAN2(n, m) 求反正切值(参数是弧度) SELECT ATAN2(-0.8, 2);

1.6 AVG(expression) 返回一个表达式的平均值,expression 是一个字段 返回 Goods 表中Price 字段的平均值: SELECT AVG(Price) AS AveragePrice FROM Goods;

1.7 CEIL(x) 返回大于或等于 x 的最小整数 SELECT CEIL(1.5) -- 返回2

1.8 CEILING(x) 返回大于或等于 x 的最小整数 SELECT CEILING(1.5); -- 返回2

1.9 COS(x) 求余弦值(参数是弧度) SELECT COS(2);

1.10 COT(x) 求余切值(参数是弧度) SELECT COT(6);

1.11 COUNT(expression) 返回查询的记录总数,expression 参数是一个字段或者 * 号返回 Goods 表中 goods 字段总共有多少条记录:

1.12 SELECT COUNT(ProductID) AS NumberOfGoods FROM Goods; 

1.13 DEGREES(x) 将弧度转换为角度 SELECT DEGREES(3.1415926535898) -- 180 

1.14 n DIV m 整除,n 为被除数,m 为除数 计算 10 除于 5:SELECT 10 DIV 5;  -- 2

1.15 EXP(x) 返回 e 的 x 次方  计算 e 的三次方: SELECT EXP(3) -- 20.085536923188

1.16 FLOOR(x) 返回小于或等于 x 的最大整数  小于或等于 1.5 的整数: SELECT FLOOR(1.5) -- 返回1

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

    返回以下字符串列表中的最大值:SELECT GREATEST("Google", "Baidu", "Apple");   -- Baidu

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

    返回以下字符串列表中的最小值: SELECT LEAST("Google", "Baidu", "Apple");   -- Apple

1.19 LN 返回数字的自然对数,以 e 为底。 返回 2 的自然对数:SELECT LN(2);  -- 0.6931471805599453

1.20 LOG(x) 或 LOG(base, x) 返回自然对数(以 e 为底的对数),如果带有 base 参数,则 base 为指定带底数。SELECT LOG(20.085536923188) -- 3 SELECT LOG(2, 4); -- 2

1.21 LOG10(x) 返回以 10 为底的对数   SELECT LOG10(100) -- 2

1.22 LOG2(x) 返回以 2 为底的对数 返回以 2 为底 6 的对数:SELECT LOG2(6);  -- 2.584962500721156

1.23  MAX(expression) 返回字段 expression 中的最大值 返回数据表 Goods 中字段 Price 的最大值: SELECT MAX(Price) AS LargestPrice FROM Goods; 

1.24 MIN(expression) 返回字段 expression 中的最小值 返回数据表 Goods 中字段 Price 的最小值: SELECT MIN(Price) AS MinPrice FROM Goods;

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

1.26 PI() 返回圆周率(3.141593)  SELECT PI() --3.141593

1.27 POW(x,y) 返回 x 的 y 次方 2 的 3 次方:SELECT POW(2,3) -- 8

1.28 POWER(x,y) 返回 x 的 y 次方 2 的 3 次方:SELECT POWER(2,3) -- 8

1.29 RADIANS(x) 将角度转换为弧度 180 度转换为弧度:SELECT RADIANS(180) -- 3.1415926535898

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

1.31 ROUND(x) 返回离 x 最近的整数   SELECT ROUND(1.23456) --1

1.32 SIGN(x) 返回 x 的符号,x 是负数、0、正数分别返回 -1、0 和 1 SELECT SIGN(-10) -- (-1)

1.33 SIN(x) 求正弦值(参数是弧度)  SELECT SIN(RADIANS(30)) -- 0.5

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

1.35 SUM(expression) 返回指定字段的总和 计算 OrderDetails 表中字段 Quantity 的总和: SELECT SUM(Quantity) AS TotalItemsOrdered FROM OrderDetails;

1.36 TAN(x) 求正切值(参数是弧度) SELECT TAN(1.75);  -- -5.52037992250933

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


2.字符串函数

2.1 ASCII(s) 返回字符串 s 的第一个字符的 ASCII 码。返回 CustomerName 字段第一个字母的 ASCII 码:

    SELECT ASCII(CustomerName) AS NumCodeOfFirstChar FROM Customers;

2.2 CHAR_LENGTH(s) 返回字符串 s 的字符数 返回字符串 BAIDU 的字符数 SELECT CHAR_LENGTH("BAIDU") AS LengthOfString;

2.3 CHARACTER_LENGTH(s) 返回字符串 s 的字符数 返回字符串 BAIDU 的字符数 SELECT CHARACTER_LENGTH("BAIDU") AS LengthOfString;

2.4 CONCAT(s1,s2...sn) 字符串 s1,s2 等多个字符串合,拼接,连接并为一个字符串 合并多个字符串

    SELECT CONCAT("SQL ", "Baidu ", "Gooogle ", "Facebook") AS ConcatenatedString;

2.5 CONCAT_WS(x, s1,s2...sn) 同 CONCAT(s1,s2,...) 函数,但是每个字符串之间要加上 x,x 可以是分隔符 合并多个字符串,并添加分隔符:

    SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!")AS ConcatenatedString;

2.6 FIELD(s,s1,s2...) 返回第一个字符串 s 在字符串列表(s1,s2...)中的位置

    返回字符串 c 在列表值中的位置: SELECT FIELD("c", "a", "b", "c", "d", "e");

2.7 FIND_IN_SET(s1,s2) 返回在字符串s2中与s1匹配的字符串的位置 返回字符串 c 在指定字符串中的位置:

    SELECT FIND_IN_SET("c", "a,b,c,d,e");

2.8 FORMAT(x,n) 函数可以将数字 x 进行格式化 "#,###.##", 将 x 保留到小数点后 n 位,最后一位四舍五入。

    格式化数字 "#,###.##" 形式: SELECT FORMAT(250500.5634, 2);     -- 输出 250,500.56

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

    从字符串第一个位置开始的 6 个字符替换为 baidu: SELECT INSERT("google.com", 1, 6, "baidu");  -- 输出:baidu.com

2.10 LOCATE(s1,s) 从字符串 s 中获取 s1 的开始位置 获取 b 在字符串 abc 中的位置:

    SELECT LOCATE('st','myteststring');  -- 5

    返回字符串 abc 中 b 的位置:

    SELECT LOCATE('b', 'abc') -- 2

2.11 LCASE(s) 将字符串 s 的所有字母变成小写字母 字符串 BAIDU 转换为小写:SELECT LCASE('BAIDU') -- baidu

2.12 LEFT(s,n) 返回字符串 s 的前 n 个字符 返回字符串 baidu 中的前两个字符:SELECT LEFT('baidu',2) -- ru

2.13 LOWER(s) 将字符串 s 的所有字母变成小写字母 字符串 BAIDU 转换为小写:SELECT LOWER('BAIDU') -- baidu

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

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

    SELECT LTRIM("    BAIDU") AS LeftTrimmedString;-- BAIDU

2.16 MID(s,n,len) 从字符串 s 的 n 位置截取长度为 len 的子字符串,同 SUBSTRING(s,n,len) 从字符串 BAIDU 中的第 2 个位置截取 3个 字符: SELECT MID("BAIDU", 2, 3) AS ExtractString; -- UNO

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

2.18 REPEAT(s,n) 将字符串 s 重复 n 次 将字符串 baidu 重复三次: SELECT REPEAT('baidu',3) -- baidubaidubaidu

2.19 REPLACE(s,s1,s2) 将字符串 s2 替代字符串 s 中的字符串 s1 将字符串 abc 中的字符 a 替换为字符 x:

     SELECT REPLACE('abc','a','x') --xbc

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

2.21 RIGHT(s,n) 返回字符串 s 的后 n 个字符 返回字符串 baidu 的后两个字符:SELECT RIGHT('baidu',2) -- ob

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

2.23 RTRIM(s) 去掉字符串 s 结尾处的空格 去掉字符串 BAIDU 的末尾空格:SELECT RTRIM("BAIDU     ") AS RightTrimmedString;   -- BAIDU

2.24 SPACE(n) 返回 n 个空格 返回 10 个空格:

    SELECT SPACE(10);

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

     SELECT STRCMP("baidu", "baidu");  -- 0

2.26 SUBSTR(s, start, length) 从字符串 s 的 start 位置截取长度为 length 的子字符串 从字符串 BAIDU 中的第 2 个位置截取 3个 字符:SELECT SUBSTR("BAIDU", 2, 3) AS ExtractString; -- UNO

2.27 SUBSTRING(s, start, length) 从字符串 s 的 start 位置截取长度为 length 的子字符串 从字符串 BAIDU 中的第 2 个位置截取 3个 字符:SELECT SUBSTRING("BAIDU", 2, 3) AS ExtractString; -- UNO

2.28 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

2.29 TRIM(s) 去掉字符串 s 开始和结尾处的空格 去掉字符串 BAIDU 的首尾空格:SELECT TRIM('    BAIDU    ') AS TrimmedString;

2.30 UCASE(s) 将字符串转换为大写 将字符串 baidu 转换为大写:SELECT UCASE("baidu"); -- BAIDU

2.31 UPPER(s) 将字符串转换为大写 将字符串 baidu 转换为大写:SELECT UPPER("baidu"); -- BAIDU


延伸阅读
  1. Html Meta referrer 标签的简介
  2. mysql的常用函数整理笔记(二)