1. 日期函数
函数名称 | 描述 |
---|---|
NOW() | 返回当前的日期和时间 |
CURDATE() | 返回当前的日期(不包含时间) |
CURRENT_DATE() | 返回当前的日期(不包含时间) |
CURRENT_TIME() | 返回当前的时间(不包含日期) |
DATEDIFF(date1, date2) | 返回两个日期之间的天数差 |
DATE_ADD(date, INTERVAL expr unit) | 向指定日期添加一个时间间隔 |
DATE_SUB(date, INTERVAL expr unit) | 从指定日期中减去一个时间间隔 |
YEAR(date) | 返回当前年份 |
MONTH(date) | 返回当前月份 |
DAY(date) | 返回今天是这个月中的第几天 |
NOW()
: 返回当前的日期和时间。
mysql> SELECT NOW();
+---------------------+
| NOW() |
+---------------------+
| 2024-10-31 12:03:01 |
+---------------------+
1 row in set (0.00 sec)
CURDATE()
: 返回当前的日期(不包含时间)
mysql> SELECT CURDATE();
+------------+
| CURDATE() |
+------------+
| 2024-10-31 |
+------------+
1 row in set (0.00 sec)
CURRENT_DATE()
: 返回当前的日期(不包含时间)
mysql> SELECT CURRENT_DATE();
+----------------+
| CURRENT_DATE() |
+----------------+
| 2024-10-31 |
+----------------+
1 row in set (0.00 sec)
CURRENT_TIME()
: 返回当前的时间(不包含日期)
mysql> SELECT CURRENT_TIME();
+----------------+
| CURRENT_TIME() |
+----------------+
| 12:10:09 |
+----------------+
1 row in set (0.00 sec)
DATEDIFF(date1, date2)
: 返回两个日期之间的天数差。
mysql> SELECT DATEDIFF('2024-11-01', '2024-10-30');
+--------------------------------------+
| DATEDIFF('2024-11-01', '2024-10-30') |
+--------------------------------------+
| 2 |
+--------------------------------------+
1 row in set (0.00 sec)
DATE_ADD(date, INTERVAL expr unit)
: 向指定日期添加一个时间间隔。
mysql> SELECT ADDDATE('2024-10-30', INTERVAL 7 DAY);
+---------------------------------------+
| ADDDATE('2024-10-30', INTERVAL 7 DAY) |
+---------------------------------------+
| 2024-11-06 |
+---------------------------------------+
1 row in set (0.00 sec)
DATE_SUB(date, INTERVAL expr unit)
从指定日期中减去一个时间间隔
mysql> SELECT SUBDATE('2024-10-30', INTERVAL 7 DAY);
+---------------------------------------+
| SUBDATE('2024-10-30', INTERVAL 7 DAY) |
+---------------------------------------+
| 2024-10-23 |
+---------------------------------------+
1 row in set (0.00 sec)
YEAR(date)
:返回当前年份
mysql> SELECT YEAR(NOW());
+-------------+
| YEAR(NOW()) |
+-------------+
| 2024 |
+-------------+
1 row in set (0.00 sec)
MONTH(date)
:返回当前月份
mysql> SELECT MONTH(NOW());
+--------------+
| MONTH(NOW()) |
+--------------+
| 10 |
+--------------+
1 row in set (0.01 sec)
DAY(date)
:返回今天是这个月中的第几天
mysql>SELECT DAY(NOW());
+------------+
| DAY(NOW()) |
+------------+
| 31 |
+------------+
1 row in set (0.00 sec)
2. 字符串函数
函数名称 | 语法 | 功能 |
---|---|---|
CONCAT () | CONCAT(str1, str2,…) | 用于连接两个或多个字符串 |
SUBSTRING () | SUBSTRING(str, start, length) | 用于提取字符串的子串 |
LENGTH () | LENGTH(str) | 用于获取字符串的长度 |
UPPER () | UPPER(str) | 用于将字符串转换为大写 |
LOWER () | LOWER(str) | 用于将字符串转换为小写 |
TRIM () | TRIM([BOTH | LEADING | TRAILING] str) | 用于去除字符串两端的特定字符(默认为空格) |
REPLACE () | REPLACE(str, from_str, to_str) | 用于在字符串中替换指定的子串 |
LEFT () | LEFT(str, length) | 从字符串的左侧提取指定长度的子串 |
RIGHT () | RIGHT(str, length) | 从字符串的右侧提取指定长度的子串 |
CHARSET() | CHARSET(str) | 返回字符串字符集 |
INSTR() | INSTR(string,substring) | 返回substring在string中出现的位置,没有返回0 |
UCASE() | UCASE(string) | 将字符串中的所有小写字母转换为大写字母 |
LCASE() | LCASE(string) | 将字符串中的所有大写字母转换为小写字母 |
REPLACE() | REPLACE(str,search_str,replace_str) | 在str中用replace_str替换search_str |
STRCMP() | STRCMP(string1,string2) | 用于比较两个字符串,并且返回一个整数来表示它们的比较结果 |
LTRIM() | LTRIM(string) | 去除前空格 |
RTRIM() | RTRIM(string) | 去除后空格 |
TRIM() | TRIM(string) | 删除字符串两端(左侧和右侧)的空格 |
- CONCAT () 函数
用于连接两个或多个字符串。
语法:CONCAT(str1, str2,...)
示例:
mysql> SELECT CONCAT('Hello', ' ', 'World');
+-------------------------------+
| CONCAT('Hello', ' ', 'World') |
+-------------------------------+
| Hello World |
+-------------------------------+
1 row in set (0.00 sec)
- SUBSTRING () 函数
用于提取字符串的子串。
语法:SUBSTRING(str, start, length)
示例:
mysql> SELECT SUBSTRING('HelloWorld', 6, 5);
+-------------------------------+
| SUBSTRING('HelloWorld', 6, 5) |
+-------------------------------+
| World |
+-------------------------------+
1 row in set (0.01 sec)
- LENGTH () 函数
用于获取字符串的长度。length函数返回字符串长度,以字节为单位。如果是多字节字符则计算多个字节数;如果是单字节字符则算作一个字节。比如:字母,数字算作一个字节,中文表示多个字节数(与字符集编码有关)
语法:LENGTH(str)
示例:
mysql> SELECT LENGTH('Hello');
+-----------------+
| LENGTH('Hello') |
+-----------------+
| 5 |
+-----------------+
1 row in set (0.00 sec)
- **UPPER ()函数 **
用于将字符串转换为大写
语法:UPPER(str)
示例:
mysql> SELECT UPPER('hello');
+----------------+
| UPPER('hello') |
+----------------+
| HELLO |
+----------------+
1 row in set (0.00 sec)
- LOWER () 函数
用于将字符串转换为小写
语法:LOWER(str)
示例:
mysql> SELECT LOWER('HELLO');
+----------------+
| LOWER('HELLO') |
+----------------+
| hello |
+----------------+
1 row in set (0.00 sec)
- TRIM () 函数
用于去除字符串两端的特定字符(默认为空格)。
语法:TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
示例:
mysql> SELECT TRIM(' Hello ');
+---------------------+
| TRIM(' Hello ') |
+---------------------+
| Hello |
+---------------------+
1 row in set (0.00 sec)
- REPLACE () 函数
用于在字符串中替换指定的子串。
语法:REPLACE(str, from_str, to_str)
示例:
mysql> SELECT REPLACE('Hello World', 'World', 'Universe');
+---------------------------------------------+
| REPLACE('Hello World', 'World', 'Universe') |
+---------------------------------------------+
| Hello Universe |
+---------------------------------------------+
1 row in set (0.00 sec)
- LEFT ()函数
从字符串的左侧提取指定长度的子串
语法:LEFT(str, length)
示例:
mysql> SELECT LEFT('HelloWorld', 5);
+-----------------------+
| LEFT('HelloWorld', 5) |
+-----------------------+
| Hello |
+-----------------------+
1 row in set (0.00 sec)
- RIGHT () 函数
从字符串的右侧提取指定长度的子串
语法:RIGHT(str, length)
mysql> SELECT RIGHT('HelloWorld', 5);
+------------------------+
| RIGHT('HelloWorld', 5) |
+------------------------+
| World |
+------------------------+
1 row in set (0.00 sec)
- CHARSET()函数
返回字符串字符集
语法:CHARSET(str)
mysql> SELECT CHARSET('hello');
+------------------+
| CHARSET('hello') |
+------------------+
| utf8mb4 |
+------------------+
1 row in set (0.00 sec)
- INSTR()函数
返回substring在string中出现的位置,没有返回0
语法:NSTR(string,substring)
mysql> SELECT INSTR('Hello, World!', 'World');
+---------------------------------+
| INSTR('Hello, World!', 'World') |
+---------------------------------+
| 8 |
+---------------------------------+
1 row in set (0.00 sec)
- UCASE()函数
将字符串中的所有小写字母转换为大写字母
语法:UCASE(string)
mysql> SELECT UCASE('Hello, World!');
+------------------------+
| UCASE('Hello, World!') |
+------------------------+
| HELLO, WORLD! |
+------------------------+
1 row in set (0.00 sec)
- LCASE()函数
将字符串中的所有大写字母转换为小写字母
语法:LCASE(string)
mysql> SELECT LCASE('Hello, World!');
+------------------------+
| LCASE('Hello, World!') |
+------------------------+
| hello, world! |
+------------------------+
1 row in set (0.00 sec)
- REPLACE()函数
在str中用replace_str替换search_str
语法:REPLACE(str,search_str,replace_str)
mysql> SELECT REPLACE('hello world','world','linux');
+----------------------------------------+
| REPLACE('hello world','world','linux') |
+----------------------------------------+
| hello linux |
+----------------------------------------+
1 row in set (0.00 sec)
- STRCMP()函数
用于比较两个字符串,并且返回一个整数来表示它们的比较结果
- 如果
string1
等于string2
,则返回 0。 - 如果
string1
大于string2
(基于字符序),则返回 1。 - 如果
string1
小于string2
(基于字符序),则返回 -1。
语法:STRCMP(string1,string2)
#相等
mysql> SELECT STRCMP('Hello', 'Hello');
+--------------------------+
| STRCMP('Hello', 'Hello') |
+--------------------------+
| 0 |
+--------------------------+
1 row in set (0.00 sec)
#小于
mysql> SELECT STRCMP('apple', 'banana'); -- 返回-1
+---------------------------+
| STRCMP('apple', 'banana') |
+---------------------------+
| -1 |
+---------------------------+
1 row in set (0.00 sec)
#大于
mysql> SELECT STRCMP('b', 'apple');
+----------------------+
| STRCMP('b', 'apple') |
+----------------------+
| 1 |
+----------------------+
1 row in set (0.00 sec)
- LTRIM()函数
去除前空格
语法:LTRIM(string)
mysql> SELECT LTRIM(' Hello, World! ');
+------------------------------+
| LTRIM(' Hello, World! ') |
+------------------------------+
| Hello, World! |
+------------------------------+
1 row in set (0.00 sec)
- RTRIM()函数
去除前空格
语法:RTRIM(string)
mysql> SELECT RTRIM(' Hello World! ');
+-----------------------------+
| RTRIM(' Hello World! ') |
+-----------------------------+
| Hello World! |
+-----------------------------+
1 row in set (0.00 sec)
- TRIM()函数
删除字符串两端(左侧和右侧)的空格
语法:TRIM(string)
mysql> SELECT TRIM(' Hello World! ');
+----------------------------+
| TRIM(' Hello World! ') |
+----------------------------+
| Hello World! |
+----------------------------+
1 row in set (0.00 sec)
3. 数学函数
函数名称 | 语法 | 描述 |
---|---|---|
ABS() | ABS(number) | 返回number的绝对值 |
BIN() | BIN(number) | 十进制转化为二进制 |
HEX() | HEX(string)、HEX(N) | 将字符串或数字转换成等效的十六进制字符串值 |
CONV() | CONV(number,form_base,to_base) | 进制转换 |
CEILING() | CEILING(number) | 向上取整 |
FLOOR() | FLOOR(number) | 向下取整 |
FORMAT() | FORMAT(number, decimal_places, locale) | 格式化,保留小数位数 |
RADN() | RAND([seed]) | 返回随机浮点数,范围[0.0,1.0] |
MOD() | MOD(dividend, divisor) | 取模,求余 |
- ABS()函数
返回number的绝对值
语法:ABS(number)
mysql> SELECT ABS(-10);
+----------+
| ABS(-10) |
+----------+
| 10 |
+----------+
1 row in set (0.00 sec)
- BIN()函数
十进制转化为二进制
语法:BIN(number)
mysql> SELECT BIN(15);
+---------+
| BIN(15) |
+---------+
| 1111 |
+---------+
1 row in set (0.00 sec)
- HEX()函数
将字符串或数字转换成等效的十六进制字符串值
语法:HEX(string)、HEX(N)
#数字转换成等效的十六进制字符串值
mysql> SELECT HEX(2020);
+-----------+
| HEX(2020) |
+-----------+
| 7E4 |
+-----------+
1 row in set (0.00 sec)
#字符串转换成等效的十六进制字符串值
mysql> SELECT HEX('geeksforgeeks');
+----------------------------+
| HEX('geeksforgeeks') |
+----------------------------+
| 6765656B73666F726765656B73 |
+----------------------------+
1 row in set (0.00 sec)
- CONV()函数
在不同进制之间转换数字
number
: 要转换的数字,通常是字符串类型。from_base
: 原始数字的进制,可以是 2 到 36 之间的整数。to_base
: 目标进制,也应在 2 到 36 之间。
语法: CONV(number,form_base,to_base)
#将二进制数 '1010' 转换为十进制
mysql> SELECT CONV('1010', 2, 10); -- 返回:10
+---------------------+
| CONV('1010', 2, 10) |
+---------------------+
| 10 |
+---------------------+
1 row in set (0.00 sec)
#将十六进制数 'A' 转换为十进制
mysql> SELECT CONV('A', 16, 10); -- 返回:10
+-------------------+
| CONV('A', 16, 10) |
+-------------------+
| 10 |
+-------------------+
1 row in set (0.00 sec)
#将十进制数 15 转换为二进制
mysql> SELECT CONV(15, 10, 2); -- 返回:1111
+-----------------+
| CONV(15, 10, 2) |
+-----------------+
| 1111 |
+-----------------+
1 row in set (0.00 sec)
#将八进制数 '17' 转换为十六进制
mysql> SELECT CONV('17', 8, 16); -- 返回:F
+-------------------+
| CONV('17', 8, 16) |
+-------------------+
| F |
+-------------------+
1 row in set (0.00 sec)
- CEILING() 函数
用于返回大于或等于指定数字的最小整数值。
语法:CEILING(number)
mysql> SELECT CEILING(4.2);
+--------------+
| CEILING(4.2) |
+--------------+
| 5 |
+--------------+
1 row in set (0.00 sec)
- FLOOR()函数
用于返回小于或等于指定数字的最大整数值
语法:FLOOR(number)
mysql> SELECT FLOOR(4.7);
+------------+
| FLOOR(4.7) |
+------------+
| 4 |
+------------+
1 row in set (0.00 sec)
- FORMAT()函数
并可以指定小数点后的位数和区域设置
- number: 要格式化的数字,可以是整数或浮点数。
- decimal_places: 指定保留的小数位数,必须是非负整数。
- locale 可选可选: 指定用于格式化的地区设置(如 ‘en_US’、‘de_DE’ 等),以决定千分位和小数点符号的样式。如果省略,则使用默认设置。
语法:FORMAT(number, decimal_places, locale)
mysql> SELECT FORMAT(1234567.89, 2); -- 返回:'1,234,567.89'
+-----------------------+
| FORMAT(1234567.89, 2) |
+-----------------------+
| 1,234,567.89 |
+-----------------------+
1 row in set (0.00 sec)
mysql> SELECT FORMAT(1234567.89, 0);
+-----------------------+
| FORMAT(1234567.89, 0) |
+-----------------------+
| 1,234,568 |
+-----------------------+
1 row in set (0.00 sec)
mysql> SELECT FORMAT(1234567.8, 3);
+----------------------+
| FORMAT(1234567.8, 3) |
+----------------------+
| 1,234,567.800 |
+----------------------+
1 row in set (0.00 sec)
mysql> SELECT FORMAT(1234567.89, 2, 'de_DE');
+--------------------------------+
| FORMAT(1234567.89, 2, 'de_DE') |
+--------------------------------+
| 1.234.567,89 |
+--------------------------------+
1 row in set (0.00 sec)
- RAND()函数
用于生成一个介于 0 和 1 之间的随机浮点数
语法:RAND([seed])
mysql> SELECT RAND();
+--------------------+
| RAND() |
+--------------------+
| 0.7771136926273943 |
+--------------------+
1 row in set (0.00 sec)
- MOD()函数
用于计算两个数相除后的余数
- dividend: 被除数(即要进行模运算的数字)。
- divisor: 除数(即用来除被除数的数字)。
语法:MOD(dividend, divisor)
mysql> SELECT MOD(10, 3);
+------------+
| MOD(10, 3) |
+------------+
| 1 |
+------------+
1 row in set (0.00 sec)
mysql> SELECT MOD(-10, 3);
+-------------+
| MOD(-10, 3) |
+-------------+
| -1 |
+-------------+
1 row in set (0.00 sec)
4. 其他函数
- user() 查询当前用户
select user();
- md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串
select md5('admin');
+----------------------------------+
| md5('admin') |
+----------------------------------+
| 21232f297a57a5a743894a0e4a801fc3 |
+----------------------------------+
- database()显示当前正在使用的数据库
select database();
- password()函数,MySQL数据库使用该函数对用户加密
select password('root');
+-------------------------------------------+
| password('root') |
+-------------------------------------------+
| *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-------------------------------------------+
- ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值
select ifnull('abc', '123');
+----------------------+
| ifnull('abc', '123') |
+----------------------+
| abc |
+----------------------+
1 row in set (0.01 sec)
select ifnull(null, '123');
+---------------------+
| ifnull(null, '123') |
+---------------------+
| 123 |
+---------------------+
1 row in set (0.00 sec)