在 SQL 中,有许多高效、简洁的函数可用于数据处理、查询优化和数据转换。

以下是一些常见的 SQL 函数及其详细中文解释、示例和总结:

1. COALESCE

  • 作用COALESCE 函数从左到右依次检查其参数,并返回第一个非空的值。如果所有参数都为空,则返回 NULL

  • 应用场景:可以在处理缺失数据时使用,尤其是多个字段可能为空的情况下,可以选择一个优先级最高的非空值。

    示例

    SELECT COALESCE(phone, mobile, email) AS contact_info FROM customers;

    解释:如果 phone 为空,COALESCE 返回 mobile 的值;如果 mobile 也为空,则返回 email 的值。

2. NULLIF

  • 作用NULLIF 函数用于比较两个表达式,如果相等则返回 NULL,否则返回第一个表达式的值。

  • 应用场景:在计算中忽略某些默认值,例如在除法运算中忽略零值,避免产生错误。

    示例

    SELECT price / NULLIF(discount, 0) AS final_price FROM products;

    解释:如果 discount0,则返回 NULL,避免了除以零的错误。

3. CONCATCONCAT_WS

  • 作用CONCAT 将多个字符串连接成一个字符串。CONCAT_WS(with separator)允许指定分隔符。

  • 应用场景:字符串拼接操作,例如生成全名、地址等。

    示例

    SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;
    SELECT CONCAT_WS(', ', city, state, country) AS full_address FROM locations;

    解释:第一个示例将名字和姓氏拼接为全名,第二个示例将地址的各个字段拼接为一个完整地址,并使用逗号作为分隔符。

 

4. IFNULLISNULL

  • 作用IFNULLISNULL 函数用于替换 NULL 值。IFNULL 在指定值为 NULL 时返回另一个值,ISNULL 返回一个布尔值表示是否为 NULL

  • 应用场景:处理可能为 NULL 的字段,避免空值影响计算结果或显示结果。

    示例

    SELECT IFNULL(phone, '未提供') AS contact_number FROM customers;
    SELECT ISNULL(phone) AS is_phone_missing FROM customers;

    解释IFNULLNULL 值替换为“未提供”,ISNULL 检查 phone 是否为 NULL

 

5. ROUNDCEILFLOOR

  • 作用ROUND 将数值四舍五入到指定的小数位数,CEIL 返回大于等于指定数值的最小整数,FLOOR 返回小于等于指定数值的最大整数。

  • 应用场景:用于处理金额、评分等数值数据的精度,或计算整数范围。

    示例

    SELECT ROUND(price, 2) AS rounded_price FROM products;
    SELECT CEIL(average_score) AS ceil_score, FLOOR(average_score) AS floor_score FROM scores;

    解释ROUNDprice 保留两位小数,CEILFLOORaverage_score 分别向上或向下取整。

 

6. DATE_ADDDATE_SUB

  • 作用DATE_ADDDATE_SUB 函数用于在日期上增加或减少指定的时间间隔(天、月、年等)。

  • 应用场景:处理日期计算,如计算合同有效期、会员到期日等。

    示例

    SELECT DATE_ADD(order_date, INTERVAL 7 DAY) AS delivery_date FROM orders;
    SELECT DATE_SUB(subscription_date, INTERVAL 1 MONTH) AS previous_month FROM subscriptions;

    解释:第一个查询计算订单的预计送达日期(加7天),第二个查询计算前一个月的日期。

 

7. DATEDIFF

  • 作用DATEDIFF 计算两个日期之间的天数差。

  • 应用场景:用于分析时间间隔,如计算订单处理时间、任务完成时间等。

    示例

    SELECT DATEDIFF(delivery_date, order_date) AS processing_days FROM orders;

    解释:计算每笔订单的处理天数,返回两个日期之间的天数差。

    

 

8. UPPERLOWER

  • 作用UPPER 将字符串转换为大写,LOWER 将字符串转换为小写。

  • 应用场景:规范化文本数据,使其不受大小写影响,例如搜索、数据清洗等。

    示例

    SELECT UPPER(last_name) AS uppercase_name, LOWER(email) AS lowercase_email FROM employees;

    :将员工姓氏转换为大写、电子邮件转换为小写。

 

9. SUBSTRING

  • 作用SUBSTRING 从指定位置开始,提取字符串的部分内容。

  • 应用场景:从字符串中提取子串,例如提取用户名、订单编号前缀等。

    示例

    SELECT SUBSTRING(email, 1, POSITION('@' IN email) - 1) AS username FROM users;

    解释:提取 email 字符串中 @ 前的部分,作为用户名。

10. CASE WHEN

  • 作用CASE WHEN 是 SQL 中的条件判断函数,可用于基于不同条件返回不同的结果。

  • 应用场景:用于实现复杂的条件判断和分类操作,例如对成绩分级、分类统计等。

    示例

    SELECT name,
           CASE 
               WHEN score >= 90 THEN '优秀'
               WHEN score >= 75 THEN '良好'
               WHEN score >= 60 THEN '合格'
               ELSE '不合格'
           END AS grade
    FROM students;

    解释:根据 score 字段的值,判断学生成绩的等级。

 

总结

这些 SQL 函数为数据处理和操作提供了丰富的工具集,有助于提高数据查询的简洁性和效率。它们适用于数据的清洗、转换、条件判断和计算等多种场景。选择合适的函数,可以使 SQL 语句更加简洁、易读,同时提升数据库的处理性能。

posted @ 2024-10-31 10:51  *感悟人生*  阅读(11)  评论(0编辑  收藏  举报