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

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

时间:2024-10-31 10:42:49浏览次数:1  
标签:返回 简洁 示例 场景 score SQL 数据处理 NULL SELECT

以下是一些常见的 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 语句更加简洁、易读,同时提升数据库的处理性能。

标签:返回,简洁,示例,场景,score,SQL,数据处理,NULL,SELECT
From: https://www.cnblogs.com/lyt263/p/18517224

相关文章

  • 遇到慢查询怎么办?一文解读MySQL 8.0查询分析工具
    本文分享自华为云社区《【华为云MySQL技术专栏】MySQL8.0EXPLAINANALYZE工具介绍》,作者:GaussDB数据库。1.EXPLAINANALYZE可以解决什么问题MySQL8.0.18版本开始支持查询分析工具EXPLAINANALYZE,该工具不仅会实际执行SQL语句,还会展示SQL语句详细的执行信息,包含执行算子(It......
  • 织梦取消MySQL错误日志生成文件功能防止暴露后台和管理员
    问题描述织梦程序在MySQL错误时会生成 mysql_error_trace.inc 文件,记录错误信息,可能导致后台目录和管理员账号信息泄露。解决方法编辑 dedesql.class.php 文件打开 /include/dedesql.class.php 文件。删除错误日志生成代码找到以下代码并删除://保存MySql错......
  • MySQL max_allowed_packet参数设置
    MySQL根据配置文件会限制Server接受的数据包大小。有时候大的插入和更新会受max_allowed_packet参数限制,导致写入或者更新失败。(比方说导入数据库,数据表)查看目前配置:代码如下:mysql>showVARIABLESlike'%max_allowed_packet%';+--------------------------+--------......
  • mysql 一次插入多少数据性能最佳
    mysql一次插入多少条是最佳性能我们经常会浏览,分享,点赞,都会产生数据,这些数可能会被存储到不同的地方,其中最常见的存储载体就是--数据库。根据场景和数据特性,可以有关系型数据库mysql,也有非关系数据库,例如:Redis,比如说:当你在网站点赞的时候,为了快速响应,可能是一个基于内存的......
  • 为数据集而生的 SQL 控制台
    随着数据集的使用量急剧增加,HuggingFace社区已经变成了众多数据集默认存放的仓库。每月,海量数据集被上传到社区,这些数据集亟需有效的查询、过滤和发现。每个月在HuggingFaceHub创建的数据集我们现在非常激动地宣布,您可以直接在HuggingFace社区中对您的数据集进行SQL......
  • 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现九
    一、前言介绍:1.1项目摘要随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势。古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力。然而,在现代社会中,由于生活节奏的加快和信息获取方式的多样化,古诗词的传播和阅读面临着一定的挑......
  • 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现十
    一、前言介绍:1.1项目摘要随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势。古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力。然而,在现代社会中,由于生活节奏的加快和信息获取方式的多样化,古诗词的传播和阅读面临着一定的挑......
  • 免费送源码:Java+ssm+MySQL+Ajax ssm第二课堂管理系统 计算机毕业设计原创定制
    摘要随着互联网的高速发展,教育进入了信息化时代,促使了多种混合式教学模式的出现。第二课堂管理系统是这一时期新型混合式教学模式的代表,它的出现改变了传统教学模式,将知识传递置于课前,将学习知识的主动性交给学生,促使学生的素质全面发展。第二课堂管理系统以“以学生为......
  • 日常工作中,你是如何优化SQL的?
    如何优化SQL加索引避免常见的索引不生效场景避免返回不必要的数据减少不必要的逻辑分批量进行思想读写分离优化sql结构分库分表性能优化分析神器—explain慢SQL排查思路1.加索引很多时候,我们的慢查询,都是因为历史原因没有加索引,或者忘记加索引导致的......
  • 【SQL】Hive/Spark SQL笔记之时间函数、环比/同比/时间比较计算
    获取当天:'${zdt.format("yyyy-MM-dd")}'//获取上月月末select'${zdt.lastMonth().format("yyyy-MM-dd")}'T-1上月末select'${zdt.addDay(-1).lastMonth().format("yyyyMMdd")}'1个小时前select'${zdt.addHour(-1)......