MySQL函数大全笔记(持续更新中...)

控制流程函数:

1. case when then 函数

1
2
3
4
5
6
7
8
9
10
11
12
13
-- 例子:
SELECT
employee_id,
first_name,
last_name,
CASE
WHEN salary < 3000 THEN 'Low'
WHEN salary BETWEEN 3000 AND 6000 THEN 'Medium'
ELSE 'High'
END AS salary_category
FROM
employees;
-- 解析:这个和Java里面一样

2. IF 函数

1
2
3
4
5
6
7
8
9
-- 例子:
SELECT
employee_id,
first_name,
last_name,
IF(salary > 5000, 'High Salary', 'Low Salary') AS salary_status
FROM
employees;
-- 解析:如果 salary > 5000 为true,则返回'High Salary',否则返回'Low Salary'

3. IFNULL 函数

1
2
3
4
5
6
7
8
9
-- 例子:
SELECT
employee_id,
first_name,
last_name,
IFNULL(phone_number, 'No Phone Number') AS contact_number
FROM
employees;
-- 解析:如果 phone_number 为null,则返回'No Phone Number'

4. NULLIF 函数

1
2
3
4
5
6
7
8
-- 例子:
SELECT
product_id,
product_name,
NULLIF(discount, 0) AS effective_discount
FROM
products;
-- 解析:如果 discount 为0,则返回null,否则返回原始的值

字符串函数:

5. ASCII 函数

1
2
3
4
5
6
7
-- 例子:
SELECT
first_name,
ASCII(SUBSTRING(first_name, 1, 1)) AS ascii_value
FROM
employees;
-- 解析:如果员工的名字是 "Belly",则 ascii_value 将返回 66,因为大写字母 "B" 的 ASCII 值是 66。

6. BIN 函数

1
2
3
4
5
6
7
8
-- 例子:
SELECT
employee_id,
salary,
BIN(salary) AS binary_salary
FROM
employees;
-- 解析:如果工资是 10,binary_salary 将显示为 '1010'。

7. CHAR 函数

1
2
3
4
5
6
7
8
-- 例子:
SELECT
employee_id,
CHAR(65) AS character_a,
CHAR(66, 67) AS characters_bc
FROM
employees;
-- 解析:CHAR(65)返回A,CHAR(66, 67)返回BC

8. CHAR_LENGTH 函数

1
2
3
4
5
6
7
8
-- 例子:
SELECT
employee_id,
first_name,
CHAR_LENGTH(first_name) AS name_length
FROM
employees;
-- 解析:如果员工的名字是 "Belly",则 name_length 将返回 5。

9. CHARACTER_LENGTH 函数

1
2
3
4
5
6
7
8
-- 例子:
SELECT
employee_id,
last_name,
CHARACTER_LENGTH(last_name) AS name_length
FROM
employees;
-- 解析:如果员工的名字是 "Belly",则 name_length 将返回 5。

10. COMPRESS 函数

1
2
3
4
5
6
7
-- 例子:
SELECT
first_name,
COMPRESS(first_name) AS compressed_name
FROM
employees;
-- 解析:该函数会将每个员工的名字压缩,生成一个更小的二进制格式。如果你需要节省存储或优化性能,使用这个函数会很有帮助。

11. CONCAT 函数

1
2
3
4
5
6
7
8
-- 例子:
SELECT
first_name,
last_name,
CONCAT(first_name, '_', last_name) AS full_name
FROM
employees;
-- 解析:如果 first_name 是 "Belly" 而 last_name 是 "lin",则 full_name 将返回 "Belly_lin"。

12. CONCAT_WS 函数

1
2
3
4
5
6
7
8
-- 例子:
SELECT
first_name,
last_name,
CONCAT_WS(' ', first_name, last_name) AS full_name
FROM
employees;
-- 解析:该函数使用空格作为分隔符,如果 first_name 是 "Belly" 而 last_name 是 "lin",则 full_name 将返回 "Belly lin"。

13. CONV 函数

1
2
3
4
5
-- 例子:
SELECT CONV(10, 10, 2); -- 返回 '1010'
SELECT CONV('A', 16, 10); -- 返回 '10'
SELECT CONV('10', 8, 16); -- 返回 '8'
-- 解析:1.将十进制数转换为二进制;2.将十六进制数转换为十进制;3.将八进制数转换为十六进制。

14. ELT 函数

1
2
3
4
-- 例子:
SELECT ELT(2, 'apple', 'banana', 'cherry'); -- 返回 'banana'
SELECT ELT(5, 'one', 'two', 'three'); -- 返回 NULL,因为没有第五个元素
-- 解析:索引(从 1 开始),如果索引超出范围,返回 null。

15. EXPORT_SET 函数

1
2
3
4
-- 例子:
SELECT EXPORT_SET(preferences, 'Enabled', 'Disabled', ', ', 3) AS preference_string
FROM user_preferences;
-- 解析:如果 preferences 的值为 5(即二进制 101),输出将会是:Enabled, Disabled, Enabled。(ps:第四个空是在结果字符串中分隔符,第五个空是要检查的位数)

16. FIELD 函数

1
2
3
-- 例子:
SELECT FIELD('b', 'a', 'b', 'c');
-- 解析:输出将是 2,因为 'b' 是列表中的第二个元素,如果不存在输出是0。

17. FIND_IN_SET 函数

1
2
3
-- 例子:
SELECT * FROM students WHERE FIND_IN_SET('Math', courses);
-- 解析:如果有一个表 students,其中有一个列 courses,它存储了学生所选的课程,以逗号分隔(ps: courses:"Math,English,Physics"),这个查询将返回所有选修了“Math”课程的学生。

18. FORMAT 函数

1
2
3
-- 例子:
SELECT FORMAT(1234567.891, 2);
-- 解析:结果输出为1,234,567.89,

19. HEX 函数

1
2
3
4
-- 例子:
SELECT HEX('Hello');
SELECT HEX(255);
-- 解析:输出结果 1.'48656C6C6F';2.'FF',该函数是能将字符串或则数字转成十六进制。

20. INSTR 函数

1
2
3
-- 例子:
SELECT INSTR('Hello, World!', 'World');
-- 解析:输出结果为8, 对大小写敏感,从1开始计数。

21. LCASE 函数

1
2
3
-- 例子:
SELECT LCASE('Hello World');
-- 解析:输出结果为'hello world',LCASE() 是 LOWER() 的同义词,将字符串中的所有字母转换为小写字母。

22. LEFT 函数

1
2
3
-- 例子:
SELECT LEFT('Hello World', 5);
-- 解析:输出结果为'Hello',该函数用于从一个字符串的左侧提取指定数量的字符。

23. LENGTH 函数

1
2
3
-- 例子:
SELECT LENGTH('Hello World');
-- 解析:输出结果为11,因为“Hello World”包含 11 个字符

24. LOAD_FILE 函数

1
2
3
-- 例子:
SELECT LOAD_FILE('/path/to/your/file.txt') AS file_content;
-- 解析:该函数用于从指定的文件中读取数据。它返回文件的内容,前提是服务器有权限访问该文件。

25. LOCATE 函数

1
2
3
4
-- 例子:
SELECT LOCATE('world', 'Hello world!');
SELECT LOCATE('o', 'Hello world!', 5);
-- 解析:1.输出结果为7,因为 "world" 从第 7 个字符开始;2.输出结果为8,从第 5 个字符开始查找 "o",找到的位置是第 8 个,如果不存在则返回0。

26. LOWER 函数

1
2
3
-- 例子:
SELECT LOWER('Hello World');
-- 解析:输出结果为'hello world',LCASE() 是 LOWER() 的同义词,将字符串中的所有字母转换为小写字母。

27. LPAD 函数

1
2
3
4
-- 例子:
SELECT LPAD('123', 5, '0');
SELECT LPAD('Hello', 3, 'X');
-- 解析:1.输出结果为'00123';2.输出结果为'Hel',因为长度限制为 3。该函数用于将字符串的左侧填充指定的字符,以达到特定的长度。

28. LTRIM 函数

1
2
3
-- 例子:
SELECT LTRIM(' Hello World! ');
-- 解析:输出结果为'Hello World! ',左侧的空格被删除。

29. MAKE_SET 函数

1
2
3
4
-- 例子:
SELECT MAKE_SET(5, 'Apple', 'Banana', 'Cherry', 'Date', 'Elderberry');
SELECT MAKE_SET(3, 'Red', 'Green', 'Blue', 'Yellow', 'Black');
-- 解析:1.返回结果为'Apple,Cherry',因为 5 的二进制是 101,表示选择第 1 和第 3 个字符串;2.返回结果为'Red,Green',因为 3 的二进制是 011,表示选择第 1 和第 2 个字符串。

30. MID 函数

1
2
3
-- 例子:
SELECT MID('Hello World', 1, 5);
-- 解析:输出结果为'Hello',MID(str ,pos ,len ) 是 SUBSTRING(str ,pos ,len ) 的同义词。

31. OCT 函数

1
2
3
-- 例子:
SELECT OCT(10);
-- 解析:返回结果为:12,该函数用于将数字转换为八进制(Octal)字符串表示。

32. OCTET_LENGTH 函数

1
2
3
-- 例子:
SELECT OCTET_LENGTH('中文');
-- 解析:返回结果为:6(字符 "中文" 在 UTF-8 编码下每个字符占用 3 个字节),该函数是计算字符串占用的内存大小,而不是字符数。

33. ORD 函数

1
2
3
4
-- 例子:
SELECT ORD('Hello');
SELECT ORD('你');
-- 解析:1.输出结果为:72;2.输出结果为:20320(在 UTF-8 编码下,字符 '你' 的 Unicode 代码点是 20320),该函数用于返回字符串中第一个字符的 ASCII 码 或 Unicode 代码点。

34. POSITION 函数

1
2
3
-- 例子:
SELECT POSITION('na' IN 'banana');
-- 解析:输出结果为:2,该函数用于返回子字符串在字符串中首次出现的位置(索引,从1开始)。

35. QUOTE 函数

1
2
3
-- 例子:
SELECT QUOTE('This is a "quoted" word');
-- 解析:输出结果为:'This is a \"quoted\" word',转义双引号,生成合法的 SQL 字符串,该函数用于将字符串转换为合法的 SQL 字符串文字(即在字符串两边加上引号)。

36. REPEAT 函数

1
2
3
4
-- 例子:
SELECT REPEAT('abc', 3);
SELECT REPEAT('test', 0);
-- 解析:1.输出结果为:abcabcabc ;2.输出结果为:''(空字符串),该函数用于重复一个字符串指定的次数,并返回生成的结果,如次数为负数报错。

37. REPLACE 函数

1
2
3
-- 例子:
SELECT REPLACE('Hello, world!', 'world', 'SQL');
-- 解析:输出结果为:Hello, SQL! ,该函数用于替换字符串中的指定部分。它会查找原字符串中的某个子字符串,并将其替换为另一个子字符串。

38. REVERSE 函数

1
2
3
-- 例子:
SELECT REVERSE('12345');
-- 解析:输出结果为:54321,该函数用于返回给定字符串的反转版本,即将字符串中的字符顺序倒置。

39. RIGHT 函数

1
2
3
-- 例子:
SELECT RIGHT('abcdef', 3);
-- 解析:输出结果为:def ,该函数用于返回一个字符串的 右侧(即末尾)部分,它从指定的位置开始,提取字符串的最后 N 个字符。

40. RPAD 函数

1
2
3
-- 例子:
SELECT RPAD('abc', 6, '*')
-- 解析:输出结果为:'abc***' ,该函数作用是将一个字符串填充到指定的长度,如果原字符串的长度小于指定的长度,则会在其右侧(也就是字符串的结尾)填充指定的字符,直到字符串达到目标长度。

41. RTRIM 函数

1
2
3
-- 例子:
SELECT RTRIM(' Hello World ');
-- 解析:输出结果为' Hello World',该函数用于移除字符串右端的空格字符(即尾部的空格)。

42. SOUNDEX 函数

1
2
3
-- 例子:
SELECT SOUNDEX('hello');
-- 解析:输出结果为:'H440',该函数是一个用来返回字符串的声音编码的函数。

43. SPACE 函数

1
2
3
-- 例子:
SELECT SPACE(5);
-- 解析:输出结果为:' ',该函数用于生成指定数量的空格字符。

44. SUBSTRING 函数

1
2
3
-- 例子:
SELECT SUBSTRING('Hello, World!', -6, 5);
-- 解析:输出结果为:'World' (ps:从倒数第六个开始提取五个字符),该函数用于从一个字符串中提取子字符串。

45. SUBSTRING_INDEX 函数

1
2
3
4
-- 例子:
SELECT SUBSTRING_INDEX('apple,banana,cherry', ',', 2);
SELECT SUBSTRING_INDEX('apple,banana,cherry', ',', -1);
-- 解析:1.输出结果为:'apple,banana';2.输出结果为:'cherry',该函数用于根据指定的分隔符提取字符串的某一部分。

46. TRIM 函数

1
2
3
-- 例子:
SELECT TRIM(' Hello, World! ');
-- 解析:输出结果为:'Hello, World!',该函数用于删除字符串两端的空白字符或指定的字符。

47. UCASE 函数

1
2
3
-- 例子:
SELECT UCASE('hello, world!');
-- 解析:输出结果为:'HELLO, WORLD!',该函数用于将字符串中的所有字符转换为大写字母。

48. UNCOMPRESS 函数

1
2
3
4
-- 例子:
SELECT COMPRESS('This is a test string.'); -- 压缩数据
SELECT UNCOMPRESS(COMPRESS('This is a test string.')); -- 解压缩数据
-- 解析:该函数用于解压缩使用 COMPRESS() 压缩的二进制数据。

49. UNCOMPRESSED_LENGTH 函数

1
2
3
4
-- 例子:
SELECT COMPRESS('This is a test string.'); -- 压缩一个字符串
SELECT UNCOMPRESSED_LENGTH(COMPRESS('This is a test string.')); -- 获取该压缩数据的原始长度
-- 解析:输出结果为:22,该函数用于计算已压缩数据的原始长度。

50. UNHEX 函数

1
2
3
-- 例子:
SELECT UNHEX('A1B2');
-- 解析:输出结果为:0xA1B2,该函数用于将十六进制字符串转换为原始的二进制数据。

51. UPPER 函数

1
2
3
-- 例子:
SELECT UPPER('hello!');
-- 解析:输出结果为:HELLO!,该函数用于将字符串中的所有字母转换为大写字母。

日期时间函数:

52. ADDDATE 函数

1
2
3
4
5
6
7
8
9
-- 语法:
-- ADDDATE(date, INTERVAL expr unit)
-- date:要修改的原始日期或时间。
-- expr:要添加的时间间隔数值,可以是一个数字或表达式。
-- unit:时间单位,指定要添加的时间单位类型,例如天(DAY)、月(MONTH)、年(YEAR)、小时(HOUR)、分钟(MINUTE)、秒(SECOND)、周(WEEK)等。

-- 例子:
SELECT ADDDATE('2024-11-01', INTERVAL 10 DAY);
-- 解析:输出结果为:2024-11-11,该函数是一个用于向日期或时间添加指定时间间隔的函数。

53. ADDTIME 函数

1
2
3
4
5
6
7
8
-- 语法:
-- ADDTIME(datetime, time)
-- datetime:原始的日期时间值,类型为 DATETIME 或 TIME。
-- time:要添加的时间间隔,通常是以 'HH:MM:SS' 格式表示的时间值。

-- 例子:
SELECT ADDTIME('2024-11-01 12:00:00', '01:30:00');
-- 解析:输出结果为:2024-11-01 13:30:00,该函数是一个用于向时间或日期时间值添加指定的时间间隔的函数。

54. CONVERT_TZ 函数

1
2
3
4
5
6
7
8
9
-- 语法:
-- CONVERT_TZ(datetime, from_tz, to_tz)
-- datetime: 要转换的时间,通常是一个 DATETIME 或 TIMESTAMP 类型的值。
-- from_tz: 当前时间所在的时区,应该是一个有效的时区名称或时区偏移量(ps:'-05:00'、'+02:00')。
-- to_tz: 目标时区,应该是一个有效的时区名称或时区偏移量。

-- 例子:
SELECT CONVERT_TZ('2024-11-14 10:00:00', 'America/New_York', 'Asia/Shanghai');
-- 解析:该函数用于将一个时间值从一个时区转换为另一个时区。

55. CURDATE 函数

1
2
3
-- 例子:
SELECT CURDATE();
-- 解析:输出结果为:2024-11-14 10:00:00(当前日期),该函数是一个用于返回当前日期的函数。

56. CURRENT_DATE 函数

1
2
3
-- 例子:
SELECT CURRENT_DATE;
-- 解析:输出结果为:2024-11-15,该函数返回服务器所在时区的当前日期,即具体取决于数据库的时区设置,通常格式为 YYYY-MM-DD(年-月-日)。

57. CURTIME 函数

1
2
3
-- 例子:
SELECT CURTIME();
-- 解析:输出结果为:13:30:45,该函数返回的是服务器当前的时间,通常格式为 HH:MM:SS(小时:分钟:秒), 具体取决于数据库的时区设置。

58. CURRENT_TIMESTAMP 函数

1
2
3
4
5
6
7
-- 例子:
CREATE TABLE example (
id INT PRIMARY KEY,
name VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 解析:该函数用于获取当前的日期和时间,于NOW()等价。

59. DATE 函数

1
2
3
-- 例子:
SELECT DATE('2024-11-19 08:45:30');
-- 解析:输出结果为:2024-11-19,该函数用于从日期或时间戳中提取日期部分(即年、月、日,格式YYYY-MM-DD)。

60. DATEDIFF 函数

1
2
3
-- 例子:
SELECT DATEDIFF('2024-11-19', '2024-11-10');
-- 解析:输出结果为:9(如果第一个日期早于第二个日期,返回值为负数),该函数用于计算两个日期之间的天数差值。

61. DATE_ADD 函数

1
2
3
4
5
6
7
8
9
-- 语法:
-- DATE_ADD(date, INTERVAL value unit)
-- date:要添加时间间隔的日期或日期时间值。
-- value:要添加的时间数量。它是一个整数,可以是负数(表示减去时间)。
-- unit:时间单位,指定时间间隔的类型,例如 SECOND(秒)、MINUTE(分钟)、HOUR(小时)、DAY(天)、MONTH(月)、YEAR(年)、WEEK(周)、QUARTER(季度)等。

-- 例子:
SELECT DATE_ADD('2024-11-19', INTERVAL 10 DAY);
-- 解析:输出结果为:2024-11-29,该函数用于向一个日期值添加指定的时间间隔(如天、月、年等)。

62. DATE_FORMAT 函数

1
2
3
4
5
6
7
8
9
-- 语法:
-- DATE_FORMAT(date, format)
-- date:要格式化的日期或日期时间值。
-- format:一个格式字符串,定义了如何将日期转换为字符串。格式字符串包含了特定的格式化符号,代表日期和时间的各个部分(如年、月、日、小时、分钟等)。
-- 常用的格式化符号:%Y:四位数的年份(例如:2024)、%y:两位数的年份(例如:24)、%m:月份(01到12)、%d:日(01到31)、%H:小时(00到23)、%i:分钟(00到59)、%s:秒(00到59)、%W:星期的全名(例如:Sunday)、%a:星期的简写(例如:Sun)、%b:月份的简写(例如:Jan)、%M:月份的全名(例如:January)

-- 例子:
SELECT DATE_FORMAT('2024-11-19 15:30:45', '%Y-%m-%d %H:%i:%s');
-- 解析:输出结果为:2024-11-19 15:30:45,该函数用于将日期值格式化为指定的字符串格式。

63. DAY 函数

1
2
3
4
5
6
7
-- 语法:
-- DAY(date)
-- date:一个有效的日期或日期时间值。可以是一个 DATE 类型、DATETIME 类型或者 TIMESTAMP 类型的字段或表达式。

-- 例子:
SELECT DAY('2024-11-19 15:30:45');
-- 解析:输出结果为:19,该函数用于从日期或日期时间值中提取出“天”的部分,返回的是一个整数,表示日期中的“日”部分(即一个月中的具体日期,范围是 1 到 31)。

64. DAYNAME 函数

1
2
3
4
5
6
7
-- 语法:
-- DAYNAME(date)
-- date:一个有效的日期或日期时间值。可以是 DATE 类型、DATETIME 类型或者 TIMESTAMP 类型的字段或表达式。

-- 例子:
SELECT DAYNAME('2024-11-19');
-- 解析:输出结果为:Tuesday,该函数用于返回一个日期值对应的星期几的名称,返回的结果是一个字符串,表示星期几的全名(如:Monday, Tuesday 等)。

65. DAYOFMONTH 函数

1
2
3
4
5
6
7
-- 语法:
-- DAYOFMONTH(date)
-- date:一个有效的日期或日期时间值,通常是 DATE、DATETIME 或 TIMESTAMP 类型的字段或表达式。

-- 例子:
SELECT DAYOFMONTH('2024-11-19 15:30:45');
-- 解析:输出结果为:19,该函数用于返回一个日期或日期时间值中的“日”部分,也就是该日期在一个月中的具体日期。

66. DAYOFWEEK 函数

1
2
3
4
5
6
7
8
-- 语法:
-- DAYOFWEEK(date)
-- date:一个有效的日期或日期时间值,可以是 DATE、DATETIME 或 TIMESTAMP 类型的字段或表达式。
-- 返回一个整数,表示该日期对应的星期几。1:星期日 (Sunday)、2:星期一 (Monday)、3:星期二 (Tuesday)、4:星期三 (Wednesday)、5:星期四 (Thursday)、6:星期五 (Friday)、7:星期六 (Saturday)

-- 例子:
SELECT DAYOFWEEK('2024-11-19');
-- 解析:输出结果为:3,该函数用于返回一个日期值对应的星期几的数字表示。星期天返回值为 1,星期一为 2,依此类推,星期六为 7。

67. DAYOFYEAR 函数

1
2
3
4
5
6
7
-- 语法:
-- DAYOFYEAR(date)
-- date:一个有效的日期(DATE 类型)或日期时间(DATETIME 类型)值。也可以是日期或时间的字符串表示。

-- 例子:
SELECT DAYOFYEAR('2024-11-21 15:30:00');
-- 解析:输出结果为:326,该函数用于返回给定日期是该年的第几天(即该日期在一年中的天数)。

68. EXTRACT 函数

1
2
3
4
5
6
7
8
-- 语法:
-- EXTRACT(unit FROM date)
-- unit:要提取的日期或时间部分(如年、月、日等)。这是一个关键字,可以是以下之一:YEAR:提取年份、MONTH:提取月份、DAY:提取日、HOUR:提取小时、MINUTE:提取分钟、SECOND:提取秒、MICROSECOND:提取微秒、QUARTER:提取季度(1 到 4)、WEEK:提取周数(ISO 周)、DAYOFYEAR:提取年份中的第几天、DAYS:提取自某个参考时间起的天数、其他如 ISOWEEK(ISO 周数)等。
-- date:有效的日期或时间值,可以是 DATE、DATETIME、TIMESTAMP 或 TIME 类型。

-- 例子:
SELECT EXTRACT(DAYOFYEAR FROM '2024-11-21');
-- 解析:输出结果:326,该函数用于从日期或时间值中提取特定的部分(如年、月、日、小时、分钟等)。

69. ASCII 函数

1
2
3
4
5
6
7
-- 语法:
-- FROM_DAYS(N)
-- N:这是一个整数值,表示自“纪元”(通常是 0年1月1日)以来的天数。

-- 例子:
SELECT FROM_DAYS(733000);
-- 解析:输出结果为:2000-01-01,该函数是一个用于将一个日期表示为天数(从某个特定日期以来的天数)转换为实际日期。

70. FROM_UNIXTIME 函数

1
2
3
4
5
6
7
8
9
-- 语法:
-- FROM_UNIXTIME(unix_timestamp, [format])
-- unix_timestamp:这是一个整数值,表示自 1970 年 1 月 1 日 00:00:00 UTC 起的秒数(即 Unix 时间戳)。
-- format(可选):这是一个格式字符串,指定如何显示转换后的日期和时间。如果没有提供此参数,FROM_UNIXTIME 默认返回的日期格式是 YYYY-MM-DD HH:MM:SS。

-- 例子:
SELECT FROM_UNIXTIME(1609459200, '%Y-%m-%d');

-- 解析:输出结果为:2021-01-01,FROM_UNIXTIME 支持的格式化选项类似于 DATE_FORMAT 函数,常见的选项包括:%Y:四位数的年份(例如:2021)、%m:月份(01 到 12)、%d:日期(01 到 31)、%H:小时(00 到 23)、%i:分钟(00 到 59)、%s:秒(00 到 59)、%W:星期几(例如:Monday)。

71. GET_FORMAT 函数

1
2
3
4
5
6
7
8
-- 语法:
-- GET_FORMAT(date_or_time, type)
-- date_or_time:表示日期或时间类型,通常是 DATE 或 TIME。
-- type:指定返回的格式类型,可以是以下值之一:'DATE'返回用于 DATE 类型的日期格式、'TIME'返回用于 TIME 类型的时间格式、'DATETIME'返回用于 DATETIME 类型的日期时间格式。

-- 例子:
SELECT GET_FORMAT(DATETIME, 'DATETIME');
-- 解析:输出结果为:'YYYY-MM-DD HH:MM:SS',该函数是一个用于获取日期或时间格式化的方式

72. HOUR 函数

1
2
3
-- 例子:
SELECT HOUR('2024-11-21 14:45:30');
-- 解析:输出结果为:14,该函数用于从时间或日期时间值中提取小时部分。

73. LAST_DAY 函数

1
2
3
-- 例子:
SELECT LAST_DAY('2024-11-15');
-- 解析:输出结果为:2024-11-30,该函数用于获取指定日期所在月份的最后一天。

74. LOCALTIME 函数

1
2
3
-- 例子:
SELECT LOCALTIME;
-- 解析:输出结果为:2024-11-21 08:30:45,该函数返回当前数据库服务器的本地时间,格式为 YYYY-MM-DD HH:MM:SS。

75. LOCALTIMESTAMP 函数

1
2
3
-- 例子:
SELECT LOCALTIMESTAMP;
-- 解析:输出结果为:2024-11-21 08:30:45,该函数返回当前本地时间的 DATETIME 类型,格式为 YYYY-MM-DD HH:MM:SS。

76. MAKEDATE 函数

1
2
3
4
5
6
7
8
-- 语法:
-- MAKEDATE(year, day_of_year)
-- year:表示年份的整数,通常是一个 4 位数(例如:2024)。
-- day_of_year:表示年份中的第几天,必须是一个整数,范围从 1 到 366。如果是闰年,最多可以是 366 天。

-- 例子:
SELECT MAKEDATE(2024, 100);
-- 解析:输出结果为:2024-04-09,该函数用于根据给定的年份和天数创建一个日期。

77. MAKETIME 函数

1
2
3
4
5
6
7
8
9
-- 语法:
-- MAKETIME(hour, minute, second)
-- hour:小时数,整数,取值范围为 0 到 23。
-- minute:分钟数,整数,取值范围为 0 到 59。
-- second:秒数,整数,取值范围为 0 到 59。

-- 例子:
SELECT MAKETIME(14, 30, 45);
-- 解析:输出结果为:14:30:45,该函数用于根据给定的小时、分钟和秒数创建一个时间值,如果传入超出正常范围的数值(例如分钟超过 59 或秒数超过 59),MySQL 会自动调整为有效的时间。

78. MICROSECOND 函数

1
2
3
-- 例子:
SELECT MICROSECOND('2024-11-21 14:32:45.123456');
-- 解析:输出结果为:123456,该函数会返回从秒的部分开始的微秒数(即小数点后 6 位)。

79. MINUTE 函数

1
2
3
-- 例子:
SELECT MINUTE('2024-11-21 14:32:45');
-- 解析:输出结果为:32,该函数用于从时间或日期中提取“分钟”部分。

80. MONTH 函数

1
2
3
-- 例子:
SELECT MONTH('2024-11-21 14:32:45');
-- 解析:输出结果为:11,该函数用于从一个日期或时间表达式中提取“月份”部分。

81. MONTHNAME 函数

1
2
3
-- 例子:
SELECT MONTHNAME('2024-11-21 14:32:45');
-- 解析:输出结果为:November,该函数用于从日期中提取完整的月份名称(如“January”, “February” 等)。

82. NOW 函数

1
2
3
-- 例子:
SELECT NOW();
-- 解析:输出结果为:2024-11-21 09:30:55,该函数返回一个 DATETIME 类型的值,表示服务器的当前日期和时间,格式为 YYYY-MM-DD HH:MM:SS。

5. ASCII 函数

1
2
3
-- 语法:
-- 例子:
-- 解析:

5. ASCII 函数

1
2
3
-- 语法:
-- 例子:
-- 解析:

5. ASCII 函数

1
2
3
-- 语法:
-- 例子:
-- 解析:

5. ASCII 函数

1
2
3
-- 语法:
-- 例子:
-- 解析:

5. ASCII 函数

1
2
3
-- 语法:
-- 例子:
-- 解析:

数学函数:

5. ABS 函数

1
2
3
-- 例子:
SELECT ABS(-2)
-- 解析:输出结果:2,该函数将数字转变成绝对值。

5. ASCII 函数

1
2
-- 例子:
-- 解析:

5. ASCII 函数

1
2
-- 例子:
-- 解析:

5. ASCII 函数

1
2
-- 例子:
-- 解析:

聚合函数

5. AVG 函数

1
2
3
4
-- 例子:
SELECT AVG(salary) AS average_salary
FROM employees;
-- 解析:该函数用于计算指定列的平均值。

5. BIT_AND 函数

1
2
3
4
5
6
7
8
9
10
11
12
-- 例子,假设权限值是按位存储的(例如:user_id=permissions,7 = 0111,3 = 0011,5 = 0101),你可以使用 BIT_AND() 来计算这些权限的按位与结果:
SELECT BIT_AND(permissions) AS combined_permissions
FROM user_permissions;
-- 解析:对于 7 (0111),3 (0011),和 5 (0101),按位与操作会得到 1 (0001),因此返回结果为 1。
-- 按位与 运算:
-- 0111 (7)
-- AND
-- 0011 (3)
-- AND
-- 0101 (5)
-- -----------------
-- 0001 (1)

5. BIT_OR 函数

1
2
3
4
5
6
7
8
9
10
11
12
-- 例子,假设权限值是按位存储的(例如:user_id=permissions,7 = 0111,3 = 0011,5 = 0101),你可以使用 BIT_OR() 来计算这些权限的按位与结果:
SELECT BIT_OR(permissions) AS combined_permissions
FROM user_permissions;
-- 解析:对于 7 (0111),3 (0011),和 5 (0101),按位或操作会得到 15 (1111),因此返回结果为 15。
-- 按位与 运算:
-- 0111 (7)
-- OR
-- 0011 (3)
-- OR
-- 0101 (5)
-- -----------------
-- 1111 (15)

5. BIT_XOR 函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-- 例子,假设权限值是按位存储的(例如:user_id=permissions,7 = 0111,3 = 0011,5 = 0101),你可以使用 BIT_XOR() 来计算这些权限的按位与结果:
SELECT BIT_XOR(permissions) AS xor_permissions
FROM user_permissions;
-- 解析:对于 7 (0111),3 (0011),和 5 (0101),按位异或操作会得到 1 (0001),因此返回结果为 1。
-- 按位与 运算:
-- 0111 (7)
-- XOR
-- 0011 (3)
-- -----------------
-- 0100 (4)

-- 0100 (4)
-- XOR
-- 0101 (5)
-- -----------------
-- 0001 (1)

5. COUNT 函数

1
2
3
-- 例子:
SELECT COUNT(user_id) FROM employees;
-- 解析:输出结果是user_id的个数,该函数用于计算表中某列的行数。

5. GROUP_CONCAT 函数

1
2
3
4
5
-- 例子:
SELECT department, GROUP_CONCAT(name ORDER BY name SEPARATOR '|') AS employees
FROM employees
GROUP BY department;
-- 解析:输出结果为:HR Alice|Charlie,IT Bob|Dave,该函数用于将分组中的多个值连接成一个字符串。

5. MIN 函数

1
2
3
4
-- 例子:
SELECT MIN(salary) AS min_salary
FROM employees;
-- 解析:输出结果返回salary的最小值,该函数用于返回指定列中的最小值。

5. MAX 函数

1
2
3
4
-- 例子:
SELECT MAX(salary) AS max_salary
FROM employees;
-- 解析:输出结果返回salary的最大值,该函数用于返回指定列中的最大值。

5. STDDEV(简写:STD) 函数

1
2
3
4
-- 例子:
SELECT STDDEV(salary) AS salary_stddev
FROM employees;
-- 解析:STD 和 STDDEV 函数都用于计算某列的标准差。

5. STDDEV_POP 函数

1
2
3
4
-- 例子:
SELECT STDDEV_POP(amount) AS overall_stddev
FROM sales;
-- 解析:该函数用于计算一组数据的总体标准差。

5. STDDEV_SAMP 函数

1
2
3
4
-- 例子:
SELECT STDDEV_SAMP(amount) AS sample_stddev
FROM sales;
-- 解析:该函数用于计算样本标准差,而不是总体标准差。

5. SUM 函数

1
2
3
-- 例子:
SELECT SUM(quantity * price) AS total_revenue FROM sales;
-- 解析:结果返回列quantity和price的乘积求和。

5. VAR_POP 函数

1
2
-- 例子:
-- 解析:楼主不是SQLBoy理解不了一点

5. VAR_SAMP 函数

1
2
-- 例子:
-- 解析:楼主不是SQLBoy理解不了一点

5. VARIANCE 函数

1
2
-- 例子:
-- 解析:楼主不是SQLBoy理解不了一点