MySQL提供了丰富多样的函数来处理数据,这些函数大致可以分为以下几类:字符函数、数学函数、日期和时间函数、控制流函数、聚合函数、系统信息函数等。
下面是一些常用的函数及其详细说明:
字符函数
-
LENGTH(str)
- 示例:
SELECT LENGTH('Hello, World!') FROM DUAL;
- 输出: 13
- 描述: 返回字符串'Hello, World!'的长度。
- 示例:
-
CONCAT(str1, str2, ...)
- 示例:
SELECT CONCAT('Hello, ', 'User') FROM DUAL;
- 输出: Hello, User
- 描述: 连接字符串'Hello, '和'User'。
- 示例:
-
SUBSTR(str, start, length)
- 示例:
SELECT SUBSTR('Hello, World!', 8, 5) FROM DUAL;
- 输出: World
- 描述: 从'Hello, World!'的第8个字符开始,提取长度为5的子串。
- 示例:
-
INSTR(str, substr)
- 示例:
SELECT INSTR('Hello, World!', 'World') FROM DUAL;
- 输出: 8
- 描述: 返回'World'在'Hello, World!'中首次出现的位置。
- 示例:
-
TRIM(str)
- 示例:
SELECT TRIM(' Trim Me ') FROM DUAL;
- 输出: Trim Me
- 描述: 删除字符串两端的空格。
- 示例:
-
UPPER(str) / LOWER(str)
- 示例:
SELECT UPPER('Hello'), LOWER('WORLD') FROM DUAL;
- 输出: HELLO, world
- 描述: 分别转换为大写和小写。
- 示例:
-
LPAD/RPAD(str, len, pad)
- 示例:
SELECT LPAD('MySQL', 10, '-') FROM DUAL;
- 输出: ----MySQL
- 描述: 左侧填充'-'使总长度达到10。
- 示例:
-
REPLACE(str, from_str, to_str)
- 示例:
SELECT REPLACE('Hello World', 'World', 'Universe') FROM DUAL;
- 输出: Hello Universe
- 描述: 将'World'替换为'Universe'。
- 示例:
数学函数
-
ROUND(x, y)
- 示例:
SELECT ROUND(3.14159, 2) FROM DUAL;
- 输出: 3.14
- 描述: 四舍五入至小数点后两位。
- 示例:
-
FLOOR(x)
- 示例:
SELECT FLOOR(3.7) FROM DUAL;
- 输出: 3
- 描述: 返回不大于x的最大整数。
- 示例:
-
CEIL(x) 或 CEILING(x)
- 示例:
SELECT CEILING(3.2) FROM DUAL;
- 输出: 4
- 描述: 返回不小于x的最小整数。
- 示例:
-
MOD(x, y)
- 示例:
SELECT MOD(10, 3) FROM DUAL;
- 输出: 1
- 描述: 返回除法的余数。
- 示例:
-
RAND()
- 示例:
SELECT RAND() FROM DUAL;
- 输出: 随机浮点数(每次执行可能不同)
- 描述: 生成0到1之间的随机数。
- 示例:
日期和时间函数
-
NOW()
- 示例:
SELECT NOW() FROM DUAL;
- 输出: 当前日期和时间(格式如:YYYY-MM-DD HH:MM:SS)
- 描述: 返回当前日期和时间。
- 示例:
-
CURDATE()
- 示例:
SELECT CURDATE() FROM DUAL;
- 输出: 当前日期(格式如:YYYY-MM-DD)
- 描述: 返回当前日期。
- 示例:
-
CURTIME()
- 示例:
SELECT CURTIME() FROM DUAL;
- 输出: 当前时间(格式如:HH:MM:SS)
- 描述: 返回当前时间。
- 示例:
-
YEAR(date)
- 示例:
SELECT YEAR('2023-04-01') FROM DUAL;
- 输出: 2023
- 描述: 提取日期中的年份。
- 示例:
-
MONTH(date)
- 示例:
SELECT MONTH('2023-04-01') FROM DUAL;
- 输出: 4
- 描述: 提取日期中的月份。
- 示例:
控制流函数
-
IF(expr1, expr2, expr3)
- 示例:
SELECT IF(5 > 3, 'Yes', 'No') FROM DUAL;
- 输出: Yes
- 描述: 如果条件为真,返回expr2,否则返回expr3。
- 示例:
-
CASE WHEN ... THEN ... ELSE ... END
- 示例:
SELECT CASE WHEN 5 > 3 THEN 'Greater' ELSE 'Less' END FROM DUAL;
- 输出: Greater
- 描述: 多分支条件判断,根据条件返回不同的结果。
- 示例:
聚合函数(假设有一个名为orders
的表,包含列amount
)
-
COUNT(column)
- 示例:
SELECT COUNT(amount) FROM orders;
- 输出: 数字(具体取决于表中非NULL的行数)
- 描述: 计算非NULL值的数量。
- 示例:
-
SUM(column)
- 示例:
SELECT SUM(amount) FROM orders;
- 输出: 总金额
- 描述: 计算指定列的总和。
- 示例:
-
AVG(column)
- 示例:
SELECT AVG(amount) FROM orders;
- 输出: 平均金额
- 描述: 计算指定列的平均值。
- 示例:
-
MAX(column)
- 示例:
SELECT MAX(amount) FROM orders;
- 输出: 最大金额
- 描述: 找出最大值。
- 示例:
-
MIN(column)
- 示例:
SELECT MIN(amount) FROM orders;
- 输出: 最小金额
- 描述: 找出最小值。
- 示例:
系统信息函数
-
VERSION()
- 示例:
SELECT VERSION() FROM DUAL;
- 输出: MySQL Server 版本号
- 描述: 返回MySQL服务器的版本号。
- 示例:
-
DATABASE()
- 示例:
SELECT DATABASE() FROM DUAL;
- 输出: 当前数据库名
- 描述: 返回当前选择的数据库名。
- 示例:
-
USER()
- 示例:
SELECT USER() FROM DUAL;
- 输出: 当前登录用户名
- 描述: 返回当前登录用户的用户名。
- 示例:
每个函数都有其特定的用途和适用场景,了解和掌握它们能帮助你更有效地处理和分析数据库中的数据。