天天看点

SQL语句小tips(持续更新)统计非法数据

统计非法数据

判断people_id是否是32为字母组成的,统计不满足要求的数据

SELECT COUNT(IF(BINARY people_id NOT REGEXP '^[0-9a-z]{32}',TRUE,NULL)) AS people_id_illegality_cnt FROM people_day      

if 表达式

IF( expr1 , expr2 , expr3 )

expr1 的值为 TRUE,则返回值为 expr2 

expr1 的值为FALSE,则返回值为 expr3

其中TRUE,select出来是1

BINARY

where条件加入BINARY的话,可以对大小写敏感,默认mysql是不区分大小写的 

非空判断,如果为空置为0,非空取当前值

两种方法:

1. 利用if+isnull判断是否为空

select if(ISNULL(sum(final_amount)),0,sum(final_amount)) as final_amount_total from day_income where day=20180821 and income_type=1;      

2 . 利用COALESCE函数

COALESCE(value1,...) :返回第一个非NULL的参数

  说明:返回列表中第一个非空值,如果没有非NULL值,则返回NULL。

  

mysql> SELECT COALESCE(NULL,1);
        -> 1
mysql> SELECT COALESCE(NULL,NULL,NULL);
        -> NULL      
select COALESCE(sum(final_amount),0)  as final_amount_total from day_income where day=20180822 and income_type=1;      

虽千万人,吾往矣!