• 0
  • 3
分享

在日常的编写SQL中,我们都会遇到一些自以为很简单实际却又不怎么熟练的内置函数,虽然我们不一定都用的上,但是要用上的时候我们得知道。为了记录最近遇到的坑,决定把它以场景模式记录下来,方便日后使用,也是一次记忆的加深

场景1:

当你sql查询出来的字段没有值,或者为null时,做数据分析时,这些个为null的字段会造成很大的困扰,所以我们需要给可能出现null的字段添加一个默认值,这个时候SQL的内置函数IFNULL()与COALESCE() 就能很好的满足我们的需求 

IFNULL() 函数

作用: IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。

语法:

IFNULL(expression, alt_value)

如果第一个参数的表达式 expression 为 NULL,则返回第二个参数的备用值。  

参数描述 
expression

必须,要测试的值

alt_value

必须,expression 表达式为 NULL 时返回的值

COALESCE() 函数

作用:接受多个参数,返回从左至右、第一个不为NULL的参数,如果所有参数都为NULL,那么返回NULL;当它使用2个参数时,和IFNULL函数作用相同。

语法:

 COALESCE(value,value1,value2,,,)是一个可变参函数,可以使用多个参数。

场景2:

当你的数据需要查询当天的值时,我们需要设置一个实时变化的值,那么内置函数NOW()就可以满足,配合上DATE_FORMAT()就能获取对应格式的当天日期。还有一个curdate()也能返回当前日期

NOW()函数

作用:NOW() 函数返回当前系统的日期和时间。

语法:

SELECT NOW() FROM table_name;

FORMAT() 函数

作用:FORMAT() 函数用于对字段的显示进行格式化。

语法:

SELECT FORMAT(column_name,format) FROM table_name;
参数描述
column_name必需。要格式化的字段。
format必需。规定格式。

两者结合:

SELECT DATE_FORMAT(Now(),'%Y-%m-%d') AS date  FROM Websites;

输出格式化为 YYYY-MM-DD 的日期

curdate()函数:

作用:CURDATE() 返回当前的日期。

语法: select  CURDATE() 

场景3:

动态查询近7天的数据,我们就需要用到DATE_SUB()函数来获取对应日期数据

DATE_SUB() 函数:

作用:从日期减去指定的时间间隔。

语法:DATE_SUB(date,INTERVAL expr type)

date 参数是合法的日期表达式。INTERVAL是固定参数,expr 参数是您希望添加的时间间隔。type 参数有(SECOND,MINUTE,HOUR,DAY,WEEK,MONTH,QUARTER,YEAR)

动态查询近7天的数据的SQL如下

 Select * from table where Time >=DATE_SUB(curdate(),INTERVAL 6 DAY) and  Time <=DATE_SUB(curdate(),INTERVAL 0 DAY)

场景4:

我们获取到的值有多位小数,需要取整,或者取值为负值,需要取其绝对值

CILE()和ABS()就能帮我们处理好,还有其他一些可以参考:https://www.runoob.com/mysql/mysql-functions.html

CILE(x) 函数:

作用:返回大于或等于 x 的最小整数。

语法:SELECT CEIL(1.5) -- 返回2

ABS(x) 函数:

作用:返回 x 的绝对值

语法:SELECT ABS(-1) -- 返回1

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   最近,项目上出于系统性稳定性、减少测试工作量考虑,打算在 Web 前端引入 BDD。由于上一个项目写了一定的 Cucumber 代码(BDD 测试框架之一),这个框架选型的责任便落到了我的肩膀上了。  在我们进行框架选型的时候,着重考虑了一个因素:测试实现脚本是由开发人员编写的,因此最好寻找 JavaScript 支持的框架。在搜索了一天后,选择了三个框架 Cucumber、Robot、Gauge。以下是上述的三个框架入选的原因:  Cucumber,团队的开发人员有一些有相关的开发经验、支持 JavaScript。  Robot Framework,测试人员接受过相关的培训、不支持 Ja...
            0 0 448
            分享
          •   黑盒测试用例的设计方法包括边界值法,等价类法,正交组合对法(OrthogonalPairs)和因果图法(CauseEfffect,类似于决策树软件测试法)等等,其中组合对法和因果图法由于涉及到输入条件与输出结果直接的组合与逻辑关系比较复杂,不适合用人工的方式计算。  BenderRBT是基于需求的功能测试用例设计工具,具有组合对法(OrthogonalPairs)和因果图(CauseEffect)两种功能模块,通过对被测应用的需求进一步清晰化整理,进而设计出最小数目的测试用例实现最大的功能覆盖率。  BenderRBT深入地分析应用的需求规格说明找出其中存在的错误和逻辑冲突,软件开发团队使...
            0 0 3905
            分享
          •   作为一名新入行的测试人员,如何提高自己在工作中的影响力呢?可能有人会问了:“测试人员不是只要安分守己的做好自己的测试工作不就行了吗?又不是当管理者,为什么要提高影响力呢?”说实话,我刚入行测试的时候也不懂得提高影响力和我的测试工作有什么关联,每天只是按部就班提交缺陷、回归缺陷罢了,交流的圈子很小。  直到有一次和带我的师傅聊起这个事情,我才明白,原来提高自己的影响力对于我们开展测试工作乃至今后职业的发展都大有裨益。提高影响力,说通俗一点就是提高自己在公司或者项目组内的“知名度”,让大家都知道自己。首先,在测试工作中,免不了要和不同角色的人打交道,比如项目经理、产品经理、开发、测试,还有用户...
            0 0 570
            分享
          • 前言今天我们来聊一聊数据分离这个话题,如果我们在网上逛一圈,就很容易找到很多关于 Python数据分离 相关的内容。测试数据分离 常用于接口自动化测试和UI自动化测试中,有很多使用Airtest项目进行自动化测试的同学,也在积极思考该如何在Airtest项目中实现数据分离。那么下文我们将以1个简单的示例,来看下我们可以如何在Airtest项目中实现数据分离:1. 示例介绍编写过Poco脚本的同学都知道,它的操作都是基于控件的。假设我们把需要操作的控件信息都存在Excel表格里面,那么我们的脚本只需要从Excel中读取到我们所需要的控件信息,然后对该控件进行操作即可。如果控件信息发生了变化,我们...
            0 0 3208
            分享
          • 测试报告是由测试人员撰写的,阅读对象是整个项目组。在测试报告的帮助下,测试人员、开发人员、项目经理、产品经理等相关者了解整体测试活动的质量。它可以帮助成员找出问题的根源或问题出现的阶段。它有助于分析问题是否是由于需求分析不够完善,代码设计不妥、管理不善的后果、不稳定的环境设施而导致的。对于项目的收官有重大意义。那测试总结报告应该怎么写呢?我见过一些测试总结报告只有过程,忽略结果,还有的总结报告只体现结果,忽略过程。我认为一份完整的测试总结报告需要将结果和过程相结合。具体包括的内容如下:任何报告都是结论先行。一上来,先pia一个结论,然后再详细开展论述。结论是为了告诉别人这个版本测试是合格还是不...
            3 3 6902
            分享
      • 51testing软件测试圈微信