zoukankan      html  css  js  c++  java
  • 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是不区分大小写的 

    mysql是通过lower_case_table_names参数来控制大小写敏感的

    非空判断,如果为空置为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;

    where语句里使用if判断。好难,感觉不好

    SELECT COUNT(1)
    FROM test_tabel
    WHERE month = (
        SELECT CASE 1
                WHEN DAY(CURDATE()) > 5 THEN date_format(curdate(), '%Y-%m')
                ELSE date_format(date_sub(curdate(), INTERVAL 1 MONTH), '%Y-%m')
            END AS correctMonth
    );

    find_in_set

    在数组的strlist是否存在,如字段ad_type为text,内容为1,2,3,4,5 判断3在不在里面

    select * from campaign_plan where find_in_set('3',ad_type);
  • 相关阅读:
    Windows Phone开发(40):漫谈关键帧动画之中篇 转:http://blog.csdn.net/tcjiaan/article/details/7559978
    Windows Phone开发(43):推送通知第一集——Toast推送 转:http://blog.csdn.net/tcjiaan/article/details/7617664
    xslt运算符
    简单实现Ajax
    继承与多态
    servlet基础知识
    用telnet 测试Http协议
    http协议基础
    类的初始化
    多态
  • 原文地址:https://www.cnblogs.com/jwentest/p/9507083.html
Copyright © 2011-2022 走看看