• 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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   一、问题引入  笔者在使用robotframework工具进行web ui自动化脚本编写时,发现:对于页面某个复选框元素定位,使用select checkbox关键字+xpath定位方式进行复选框勾选操作时,报错“Checkbox with locator,'xpath=//hs-i18n[contains(.,'xx')]' not found”,即xpath定位路径的checkbox找不到。经过笔者排错和研究,得出以下结论:1、xpath定位路径正确;2、select checkbox对元素使用标签有限制,只能对input标签使用,而测试的元素...
            12 12 2080
            分享
          • 作为测试人员,和我们最常打交道的,莫属bug。当你发现bug后,会采取什么样的行动?是直接报出来,亦或找找问题原因?不管是我们自己找到的,亦或是开发修复后告诉我们的,知道问题之所在总是好的。在本篇文章中,笔者试图带领大家一起梳理下,为什么测试人员定位问题很重要,以及我们可以使用什么样的定位方法。NO1.定位问题的重要性很多测试人员可能会说,我的职责就是找到bug,至于找原因并修复,那是开发的事情,关我什么事?好,我的回答是,如果您只想做一个测试人员最基本最本分的事情,那么可以这么想。但是,如果您想要在测试甚至开发的道路上长足发展,就要知其所以然。那么,为什么定位问题如此重要?1、可以明确一个问...
            0 0 1360
            分享
          • 一、前言       互联网公司常见工种有哪些?       互联网中一个项目的上线会需要各个工种间的配合,以研发为视角上会承接产品需求,下会交给测试验证,最终完成项目交付上线。其实除此之外,还会有业务、运营、UI设计、运维,来配合项目的发起、使用和运维维护。图 18-1,互联网工种协同合作。       除了一条线上的工作交替配合,还有同工种间的跨部门协同工作。 比如:产品阶段:A产品中的部分服务,需要由另外一个部门配合开发相关服务支撑。那么双方产品需要协调好时间节奏,配合...
            15 14 2258
            分享
          • 概念Hamcrest是用于编写匹配器对象的框架。他提供了一套匹配符Matcher,这些匹配符更接近自然语言,可读性高,更加灵活。Hamcrest还有很好的可扩展性,能够创建自定义的匹配器。支持语言Hamcest支持多种语言,在Hamcest 官网便可以看到:http://hamcrest.org/JavaPythonRubyObjective-CPHPErlangSwift示例from hamcrest import * import unittest class BiscuitTest(unittest.TestCase):  &...
            1 1 2103
            分享
          • 环境:OS:Windows 10 17134Python:3.4.4Selenium:3.13.0Browser:68.0.3440.84(正式版本) (64 位)ChromeDriver:2.41脚本内容:# -*- coding: utf-8 -*-""" 测试 selenium webdriver """import timefrom selenium import webdriverdef test():  ...
            1 2 2417
            分享
      • 51testing软件测试圈微信