天天看點

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;      

雖千萬人,吾往矣!