您的位置:首页 > 科技 > 能源 > 上海高端网页设计_重庆观音桥_站长工具域名_国家职业技能培训平台

上海高端网页设计_重庆观音桥_站长工具域名_国家职业技能培训平台

2025/5/7 21:01:52 来源:https://blog.csdn.net/weixin_73510682/article/details/147061544  浏览:    关键词:上海高端网页设计_重庆观音桥_站长工具域名_国家职业技能培训平台
上海高端网页设计_重庆观音桥_站长工具域名_国家职业技能培训平台

SQL 函数概述

SQL 函数可以分为几大类,不同数据库系统可能有略微不同的实现。以下是主要的 SQL 函数分类:

1. 聚合函数 (Aggregate Functions)

  • COUNT() - 计算行数

  • SUM() - 计算总和

  • AVG() - 计算平均值

  • MIN() - 找最小值

  • MAX() - 找最大值

  • GROUP_CONCAT() (MySQL) / STRING_AGG() (SQL Server, PostgreSQL) - 连接字符串

  • STDDEV() / STDDEV_POP() - 计算标准差

  • VARIANCE() / VAR_POP() - 计算方差

2. 标量函数 (Scalar Functions)

字符串函数

  • CONCAT() - 连接字符串

  • SUBSTRING() / SUBSTR() - 提取子字符串

  • TRIM() - 去除空格

  • UPPER() / UCASE() - 转为大写

  • LOWER() / LCASE() - 转为小写

  • LENGTH() / LEN() - 字符串长度

  • REPLACE() - 替换字符串

  • LEFT() / RIGHT() - 获取左/右部分字符串

数学函数

  • ABS() - 绝对值

  • ROUND() - 四舍五入

  • CEIL() / CEILING() - 向上取整

  • FLOOR() - 向下取整

  • MOD() - 取模

  • POWER() / POW() - 幂运算

  • SQRT() - 平方根

  • RAND() - 随机数

日期和时间函数

  • NOW() / CURRENT_TIMESTAMP - 当前日期时间

  • CURDATE() / CURRENT_DATE - 当前日期

  • CURTIME() / CURRENT_TIME - 当前时间

  • DATE() - 提取日期部分

  • TIME() - 提取时间部分

  • YEAR() / MONTH() / DAY() - 提取年/月/日

  • DATEDIFF() - 计算日期差

  • DATE_ADD() / DATE_SUB() - 日期加减

  • DAYNAME() / MONTHNAME() - 获取星期/月份名称

转换函数

  • CAST() - 类型转换

  • CONVERT() - 类型转换

  • COALESCE() - 返回第一个非NULL值

  • NULLIF() - 两值相等返回NULL

条件函数

  • CASE WHEN...THEN...ELSE...END - 条件表达式

  • IF() (MySQL) - 简单条件判断

  • IIF() (SQL Server) - 简单条件判断

  • DECODE() (Oracle) - 值匹配判断

3. 窗口函数 (Window Functions)

  • ROW_NUMBER() - 行号

  • RANK() - 排名(有间隔)

  • DENSE_RANK() - 排名(无间隔)

  • NTILE() - 分组排名

  • LEAD() / LAG() - 访问前后行数据

  • FIRST_VALUE() / LAST_VALUE() - 窗口首/尾值

  • PERCENT_RANK() - 百分比排名

  • CUME_DIST() - 累积分布

4. 系统函数

  • USER() / CURRENT_USER - 当前用户

  • DATABASE() - 当前数据库

  • VERSION() - 数据库版本

  • LAST_INSERT_ID() (MySQL) - 最后插入的ID


    完整的SQL函数分类及使用示例

  • 一、聚合函数 (Aggregate Functions)

    1. COUNT()

    sql

    -- 计算所有行数
    SELECT COUNT(*) FROM products;-- 计算特定列非NULL值
    SELECT COUNT(product_name) FROM products;-- 计算不同值的数量
    SELECT COUNT(DISTINCT category_id) FROM products;

    2. SUM()

    sql

    -- 计算总和
    SELECT SUM(quantity) FROM inventory;-- 带条件的求和
    SELECT SUM(price) FROM orders WHERE order_date > '2023-01-01';

    3. AVG()

    sql

    -- 计算平均值
    SELECT AVG(rating) FROM product_reviews;-- 结合ROUND函数
    SELECT ROUND(AVG(salary), 2) FROM employees;

    4. MIN()/MAX()

    sql

    复制

    -- 最小值和最大值
    SELECT MIN(price), MAX(price) FROM products;-- 日期最值
    SELECT MIN(hire_date), MAX(hire_date) FROM employees;

    5. GROUP_CONCAT()/STRING_AGG()

    sql

    -- MySQL
    SELECT department_id, GROUP_CONCAT(employee_name SEPARATOR '; ') 
    FROM employees GROUP BY department_id;-- SQL Server/PostgreSQL
    SELECT department_id, STRING_AGG(employee_name, '; ') 
    FROM employees GROUP BY department_id;

    6. STDDEV()/VARIANCE()

    sql

    -- 标准差和方差
    SELECT STDDEV(salary), VARIANCE(salary) FROM employees;

    二、标量函数 (Scalar Functions)

    字符串函数

    1. CONCAT()

    sql

    SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM customers;
    2. SUBSTRING()/SUBSTR()

    sql

    SELECT SUBSTRING('Database', 1, 4); -- 返回'Data'
    SELECT SUBSTR(email, 1, POSITION('@' IN email)-1) AS username FROM users;
    3. TRIM()

    sql

    SELECT TRIM('   SQL   '); -- 返回'SQL'
    SELECT TRIM(BOTH 'x' FROM 'xxSQLxx'); -- 返回'SQL'
    4. UPPER()/LOWER()

    sql

    SELECT UPPER('Hello'); -- 'HELLO'
    SELECT LOWER('SQL');   -- 'sql'
    5. LENGTH()/LEN()

    sql

    -- MySQL/PostgreSQL
    SELECT LENGTH('SQL'); -- 3-- SQL Server
    SELECT LEN('SQL');    -- 3
    6. REPLACE()

    sql

    SELECT REPLACE('Hello World', 'World', 'SQL'); -- 'Hello SQL'
    7. LEFT()/RIGHT()

    sql

    SELECT LEFT('Database', 4); -- 'Data'
    SELECT RIGHT('Database', 3); -- 'ase'

    数学函数

    1. ABS()

    sql

    SELECT ABS(-15); -- 15
    2. ROUND()

    sql

    SELECT ROUND(123.4567, 2); -- 123.46
    3. CEIL()/CEILING()/FLOOR()

    sql

    SELECT CEIL(123.45);  -- 124
    SELECT FLOOR(123.45); -- 123
    4. MOD()

    sql

    SELECT MOD(10, 3); -- 1 (10除以3的余数)
    5. POWER()/POW()

    sql

    SELECT POWER(2, 3); -- 8 (2的3次方)
    6. SQRT()

    sql

    SELECT SQRT(25); -- 5
    7. RAND()

    sql

    -- 生成0-1之间的随机数
    SELECT RAND();-- 生成1-100的随机整数(MySQL)
    SELECT FLOOR(1 + RAND() * 100);

    日期和时间函数

    1. NOW()/CURRENT_TIMESTAMP

    sql

    SELECT NOW(); -- 返回当前日期时间 '2023-10-25 15:30:45'
    2. CURDATE()/CURRENT_DATE

    sql

    SELECT CURDATE(); -- '2023-10-25'
    3. CURTIME()/CURRENT_TIME

    sql

    SELECT CURTIME(); -- '15:30:45'
    4. DATE()/TIME()

    sql

    SELECT DATE('2023-10-25 15:30:45'); -- '2023-10-25'
    SELECT TIME('2023-10-25 15:30:45'); -- '15:30:45'
    5. YEAR()/MONTH()/DAY()

    sql

    SELECT YEAR('2023-10-25'); -- 2023
    SELECT MONTH('2023-10-25'); -- 10
    SELECT DAY('2023-10-25'); -- 25
    6. DATEDIFF()

    sql

    -- MySQL
    SELECT DATEDIFF('2023-12-31', '2023-10-25'); -- 67-- SQL Server
    SELECT DATEDIFF(day, '2023-10-25', '2023-12-31');
    7. DATE_ADD()/DATE_SUB()

    sql

    -- MySQL
    SELECT DATE_ADD('2023-10-25', INTERVAL 7 DAY); -- '2023-11-01'-- SQL Server
    SELECT DATEADD(day, 7, '2023-10-25');
    8. DAYNAME()/MONTHNAME()

    sql

    SELECT DAYNAME('2023-10-25'); -- 'Wednesday'
    SELECT MONTHNAME('2023-10-25'); -- 'October'

    转换函数

    1. CAST()/CONVERT()

    sql

    SELECT CAST('123' AS SIGNED); -- 字符串转整数
    SELECT CONVERT('2023-10-25', DATE); -- 字符串转日期
    2. COALESCE()

    sql

    SELECT COALESCE(NULL, NULL, 'SQL', NULL, 'Example'); -- 'SQL'
    3. NULLIF()

    sql

    SELECT NULLIF(10, 10); -- NULL
    SELECT NULLIF(10, 20); -- 10

    条件函数

    1. CASE WHEN

    sql

    SELECT product_id,price,CASE WHEN price > 100 THEN 'Expensive'WHEN price > 50 THEN 'Moderate'ELSE 'Cheap'END AS price_category
    FROM products;
    2. IF() (MySQL)

    sql

    SELECT IF(1 > 0, 'True', 'False'); -- 'True'
    3. IIF() (SQL Server)

    sql

    SELECT IIF(1 > 0, 'True', 'False'); -- 'True'
    4. DECODE() (Oracle)

    sql

    SELECT DECODE(status, 1, 'Active', 0, 'Inactive', 'Unknown') FROM users;

    三、窗口函数 (Window Functions)

    1. ROW_NUMBER()

    sql

    SELECT employee_id,salary,ROW_NUMBER() OVER (ORDER BY salary DESC) AS rank
    FROM employees;

    2. RANK()/DENSE_RANK()

    sql

    SELECT product_id,sales,RANK() OVER (ORDER BY sales DESC) AS rank,DENSE_RANK() OVER (ORDER BY sales DESC) AS dense_rank
    FROM products;

    3. NTILE()

    sql

    SELECT customer_id,total_purchases,NTILE(4) OVER (ORDER BY total_purchases DESC) AS quartile
    FROM customers;

    4. LEAD()/LAG()

    sql

    SELECT date,revenue,LAG(revenue, 1) OVER (ORDER BY date) AS prev_day_revenue,LEAD(revenue, 1) OVER (ORDER BY date) AS next_day_revenue
    FROM daily_sales;

    5. FIRST_VALUE()/LAST_VALUE()

    sql

    SELECT department_id,employee_id,salary,FIRST_VALUE(employee_id) OVER (PARTITION BY department_id ORDER BY salary DESC) AS highest_paid
    FROM employees;

    6. PERCENT_RANK()/CUME_DIST()

    sql

    SELECT student_id,score,PERCENT_RANK() OVER (ORDER BY score) AS percentile,CUME_DIST() OVER (ORDER BY score) AS cumulative_dist
    FROM exam_results;

    四、系统函数

    1. USER()/CURRENT_USER

    sql

    SELECT USER(); -- 'root@localhost'

    2. DATABASE()

    sql

    SELECT DATABASE(); -- 返回当前数据库名

    3. VERSION()

    sql

    SELECT VERSION(); -- '8.0.26'

    4. LAST_INSERT_ID() (MySQL)

    sql

    -- 获取最后插入的自动增量ID
    SELECT LAST_INSERT_ID();

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com