在日常的编写SQL中,我们都会遇到一些自以为很简单实际却又不怎么熟练的内置函数,虽然我们不一定都用的上,但是要用上的时候我们得知道。为了记录最近遇到的坑,决定把它以场景模式记录下来,方便日后使用,也是一次记忆的加深
当你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,,,)是一个可变参函数,可以使用多个参数。
当你的数据需要查询当天的值时,我们需要设置一个实时变化的值,那么内置函数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()
动态查询近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)
我们获取到的值有多位小数,需要取整,或者取值为负值,需要取其绝对值
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