統計非法資料
判斷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;
雖千萬人,吾往矣!