1. 字符串函数
  • CONCAT(str1, str2, ..., strN)
    将多个字符串连接成一个新的字符串。
    示例:CONCAT('Hello', ' ', 'World') 结果:Hello World

  • SUBSTRING(str, start, length)
    从字符串 str 中提取子字符串,从 start 位置开始,提取 length 个字符。
    示例:SUBSTRING('Hello World', 1, 5) 结果:Hello

  • LENGTH(str)
    返回字符串 str 的长度(字符数)。
    示例:LENGTH('Hello') 结果:5

  • UPPER(str)
    将字符串 str 转换为大写。
    示例:UPPER('hello') 结果:HELLO

  • LOWER(str)
    将字符串 str 转换为小写。
    示例:LOWER('HELLO') 结果:hello

  • TRIM(str)
    去掉字符串 str 两端的空格。
    示例:TRIM(' Hello ') 结果:Hello

  • REPLACE(str, old_substr, new_substr)
    将字符串 str 中的 old_substr 替换为 new_substr
    示例:REPLACE('Hello World', 'World', 'SQL') 结果:Hello SQL

  • INSTR(str, substring)
    返回子字符串 substring 在字符串 str 中首次出现的位置(位置从 1 开始)。
    示例:INSTR('Hello World', 'World') 结果:7

  • CONCAT_WS(separator, str1, str2, ..., strN)
    用分隔符 separator 将多个字符串连接起来。
    示例:CONCAT_WS('-', '2024', '12', '07') 结果:2024-12-07


2. 日期和时间函数
  • CURDATE()
    返回当前的日期(不包括时间部分)。
    示例:CURDATE() 结果:2024-12-07

  • NOW()
    返回当前的日期和时间。
    示例:NOW() 结果:2024-12-07 12:34:56

  • DATE_ADD(date, INTERVAL value unit)
    date 添加指定的时间间隔 value 和单位 unit(如:DAY, MONTH, YEAR)。
    示例:DATE_ADD('2024-12-07', INTERVAL 7 DAY) 结果:2024-12-14

  • DATE_SUB(date, INTERVAL value unit)
    date 中减去指定的时间间隔。
    示例:DATE_SUB('2024-12-07', INTERVAL 7 DAY) 结果:2024-11-30

  • DATEDIFF(date1, date2)
    返回两个日期之间的天数差。
    示例:DATEDIFF('2024-12-07', '2024-12-01') 结果:6

  • DATE_FORMAT(date, format)
    根据指定的格式将 date 转换为字符串。
    示例:DATE_FORMAT('2024-12-07', '%Y-%m-%d') 结果:2024-12-07

  • STR_TO_DATE(str, format)
    将字符串 str 转换为日期,根据给定的格式 format
    示例:STR_TO_DATE('2024-12-07', '%Y-%m-%d') 结果:2024-12-07

  • MONTH(date)
    返回日期中的月份。
    示例:MONTH('2024-12-07') 结果:12

  • DAY(date)
    返回日期中的天数。
    示例:DAY('2024-12-07') 结果:7

  •  

 YEAR(date)
返回日期中的年份

TIMESTAMPDIFF(unit, datetime1, datetime2)

计算两个日期/时间之间的差异,可以指定具体的单位(如年、月、天、小时、分钟、秒)

示例:TIMESTAMPDIFF(YEAR, '1990-01-01', '2024-12-01')


3. 数学函数
  • ABS(number)
    返回数字 number 的绝对值。
    示例:ABS(-5) 结果:5

  • ROUND(number, decimals)
    将数字 number 四舍五入到 decimals 位小数。
    示例:ROUND(3.14159, 2) 结果:3.14

  • CEIL(number)
    返回大于或等于 number 的最小整数(向上取整)。
    示例:CEIL(3.2) 结果:4

  • FLOOR(number)
    返回小于或等于 number 的最大整数(向下取整)。
    示例:FLOOR(3.7) 结果:3

  • RAND()
    返回一个介于 0 到 1 之间的随机数。
    示例:RAND() 结果:0.7642(每次执行会返回不同的值)

  • POW(base, exponent)
    返回 baseexponent 次方。
    示例:POW(2, 3) 结果:8


4. 聚合函数
  • COUNT(*)
    计算行数。
    示例:SELECT COUNT(*) FROM table_name;

  • SUM(column)
    返回列 column 的总和。
    示例:SELECT SUM(price) FROM products;

  • AVG(column)
    返回列 column 的平均值。
    示例:SELECT AVG(age) FROM employees;

  • MAX(column)
    返回列 column 的最大值。
    示例:SELECT MAX(price) FROM products;

  • MIN(column)
    返回列 column 的最小值。
    示例:SELECT MIN(price) FROM products;


5. 条件函数
  • IF(condition, true_value, false_value)
    根据条件 condition 的真假返回不同的值。
    示例:IF(age > 18, 'Adult', 'Minor')

  • CASE WHEN ... THEN ... ELSE ... END
    在多个条件下选择性地返回值。
    示例:

    CASE 
      WHEN age < 18 THEN 'Minor' 
      WHEN age >= 18 AND age <= 60 THEN 'Adult'
      ELSE 'Senior' 
    END
    


6. 其他函数
  • ISNULL(expression)
    检查表达式是否为 NULL,如果是返回 TRUE,否则返回 FALSE
    示例:ISNULL(age) 结果:FALSE(假设 age 不为 NULL

  • COALESCE(expr1, expr2, ..., exprN)
    返回第一个非 NULL 的表达式值。
    示例:COALESCE(NULL, NULL, 'First Non-Null') 结果:'First Non-Null'

  • CONVERT(expr, type)
    expr 转换为指定的 type 类型。
    示例:CONVERT('2024-12-07', DATE) 结果:2024-12-07

  • GROUP_CONCAT(expression)
    将分组中的值连接为一个字符串。
    示例:SELECT GROUP_CONCAT(name) FROM employees GROUP BY department;

7. 窗口函数(Window Functions)

窗口函数在进行查询时可以对数据进行“分组”的操作,但不同于聚合函数,窗口函数不改变查询结果的行数。

  • ROW_NUMBER()
    为结果集中的每一行分配一个唯一的序号。
    示例:

    SELECT name, ROW_NUMBER() OVER (ORDER BY age DESC) as rank FROM employees;
    
  • RANK()
    返回分配给每行的排名(在相同排名时跳过数字)。
    示例:

    SELECT name, RANK() OVER (ORDER BY age DESC) as rank FROM employees;
    
  • DENSE_RANK()
    返回分配给每行的排名(在相同排名时不会跳过数字)。
    示例:

    SELECT name, DENSE_RANK() OVER (ORDER BY age DESC) as rank FROM employees;
    
  • NTILE(n)
    将结果集分为 n 个等份,并为每行分配一个表示该分组的值。
    示例:

    SELECT name, NTILE(4) OVER (ORDER BY age) as quartile FROM employees;
  • LEAD(expr, offset, default)
    返回当前行之后的某行数据。
    示例:

    SELECT name, LEAD(salary, 1) OVER (ORDER BY salary) AS next_salary FROM employees;
  • LAG(expr, offset, default)
    返回当前行之前的某行数据。
    示例:

    SELECT name, LAG(salary, 1) OVER (ORDER BY salary) AS previous_salary FROM employees;

8. 集合函数

集合函数用于操作多个值(如数组、集合、行等)。

  • UNION
    合并两个或多个查询的结果集,并去除重复项。
    示例:

    SELECT name FROM employees WHERE department = 'HR' UNION SELECT name FROM employees WHERE department = 'IT';
  • UNION ALL
    合并两个或多个查询的结果集,但不去除重复项。
    示例:

    SELECT name FROM employees WHERE department = 'HR' UNION ALL SELECT name FROM employees WHERE department = 'IT';
  • INTERSECT
    返回两个查询结果集的交集。
    示例:

    SELECT name FROM employees WHERE department = 'HR' INTERSECT SELECT name FROM employees WHERE department = 'IT';
  • EXCEPT (或 MINUS)
    返回第一个查询结果集与第二个查询结果集之间的差集。
    示例:

    SELECT name FROM employees WHERE department = 'HR' EXCEPT SELECT name FROM employees WHERE department = 'IT';

9. 条件与判断函数

  • IFNULL(expr, value)
    如果 exprNULL,返回 value,否则返回 expr
    示例:

    SELECT IFNULL(age, 0) FROM employees;
  • NULLIF(expr1, expr2)
    如果 expr1expr2 相等,返回 NULL,否则返回 expr1
    示例:

    SELECT NULLIF(age, 30) FROM employees;
  • CASE WHEN ... THEN ... ELSE ... END
    用于实现更复杂的条件判断。
    示例:

    SELECT name, CASE WHEN age < 18 THEN 'Minor' WHEN age >= 18 AND age <= 60 THEN 'Adult' ELSE 'Senior' END as age_group FROM employees;

10. 类型转换函数

  • CAST(expr AS type)
    将表达式 expr 转换为指定的类型 type
    示例:

    SELECT CAST(age AS CHAR) FROM employees;
  • CONVERT(expr, type)
    CAST() 相似,用于类型转换。
    示例:

    SELECT CONVERT(age, CHAR) FROM employees;

11. 聚合函数扩展

  • GROUP_CONCAT(expression)
    将分组中的值连接成一个字符串,并用逗号或指定分隔符分隔。
    示例:

    SELECT department, GROUP_CONCAT(name) FROM employees GROUP BY department;
  • BIT_AND(expression)
    对所有行计算与运算。
    示例:

    SELECT BIT_AND(flags) FROM users;
  • BIT_OR(expression)
    对所有行计算或运算。
    示例:

    SELECT BIT_OR(flags) FROM users;
  • STDDEV(expression)
    返回 expression 的标准差。
    示例:

    SELECT STDDEV(age) FROM employees;
  • VARIANCE(expression)
    返回 expression 的方差。
    示例:

    SELECT VARIANCE(age) FROM employees;

12. JSON函数

在支持 JSON 数据类型的数据库(如 MySQL 5.7+)中,可以使用一些特殊的函数来操作 JSON 数据。

  • JSON_OBJECT(key1, value1, key2, value2, ...)
    创建一个 JSON 对象。
    示例:

    SELECT JSON_OBJECT('name', 'John', 'age', 30);
  • JSON_ARRAY(value1, value2, ...)
    创建一个 JSON 数组。
    示例:

    SELECT JSON_ARRAY('apple', 'banana', 'cherry');
  • JSON_EXTRACT(json_doc, path)
    从 JSON 文档中提取数据。
    示例:

    SELECT JSON_EXTRACT('{"name": "John", "age": 30}', '$.name');
  • JSON_UNQUOTE(json_doc)
    去掉 JSON 字符串中的引号。
    示例:

    SELECT JSON_UNQUOTE('\"John\"');
  • JSON_SET(json_doc, path, value)
    在 JSON 文档中设置某个路径的值。
    示例:

    SELECT JSON_SET('{"name": "John"}', '$.age', 30);

13. 其他常见函数

  • UUID()
    生成一个唯一的标识符(UUID)。
    示例:

    SELECT UUID();
  • LAST_INSERT_ID()
    返回最后插入的自增 ID。
    示例:

    INSERT INTO employees (name, age) VALUES ('John', 30); SELECT LAST_INSERT_ID();
  • IFNULL(expr, value)
    如果 exprNULL,则返回 value,否则返回 expr
    示例:

    SELECT IFNULL(age, 'Unknown') FROM employees;

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐