• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    mysql 求解求2个或以上字段为NULL的记录

    核心代码

    /*--------------------------------
    求2个或以上字段为NULL 的记录
    t1:
    id, id1, id2, id3, id4, id5, id6
    在t1 表中有个字段;
    其中id是主键;
    怎样打印其中个字段或以上为NULL 的记录id?
    另外,存储过程中怎么实现按顺序一条一条读取记录最方便?
    注:主键id 是没有顺序的,也可能是字符串的;
    -----------------------------------------*/
    drop table if exists t1;
    create table t1(id int,id1 int,id2 int,id3 int,id4 int,id5 int,id6 int);
    insert t1 select
    1,1,1,1,1,null,null union all select 
    2,null,null,null,1,2,3 union all select 
    3,1,2,3,4,5,6 union all select 
    4,1,2,3,4,5,null union all select 
    5,null,3,4,null,null,null ;
    delimiter $$
    create procedure usp_c_null()
    begin 
    declare n_c int;
    declare idd int;
    declare cur cursor for 
    select id,case char_length(concat(ifnull(id1,'@'),ifnull(id2,'@'),ifnull(id3,'@'),ifnull(id4,'@'),ifnull(id5,'@'),ifnull(id6,'@')))
    -char_length(replace(concat(ifnull(id1,'@'),ifnull(id2,'@'),ifnull(id3,'@'),ifnull(id4,'@'),ifnull(id5,'@'),ifnull(id6,'@')),'@','') )
     when 6 then 6 when 5 then 5 when 4 then 4  when 3 then 3 when 2 then 2 when 1 then 1 else 0 end as c from t1;
    declare exit HANDLER for not found close cur ;
    open cur;
    repeat 
    fetch cur into idd,n_c;
    if(n_c>=2) then
    select * from t1 where id=idd;
    end if ;
    until 0 end repeat;
    close cur;
    end ;
    $$
    delimiter ;
    /*
    +------+------+------+------+------+------+------+
    | id  | id1 | id2 | id3 | id4 | id5 | id6 |
    +------+------+------+------+------+------+------+
    |  1 |  1 |  1 |  1 |  1 | NULL | NULL |
    +------+------+------+------+------+------+------+
    1 row in set (0.10 sec)
    +------+------+------+------+------+------+------+
    | id  | id1 | id2 | id3 | id4 | id5 | id6 |
    +------+------+------+------+------+------+------+
    |  2 | NULL | NULL | NULL |  1 |  2 |  3 |
    +------+------+------+------+------+------+------+
    1 row in set (0.14 sec)
    +------+------+------+------+------+------+------+
    | id  | id1 | id2 | id3 | id4 | id5 | id6 |
    +------+------+------+------+------+------+------+
    |  5 | NULL |  3 |  4 | NULL | NULL | NULL |
    +------+------+------+------+------+------+------+
    1 row in set (0.17 sec)
    */

    您可能感兴趣的文章:
    • 为什么mysql字段要使用NOT NULL
    • MySQL中可为空的字段设置为NULL还是NOT NULL
    • MySQL查询空字段或非空字段(is null和not null)
    • mysql 字段定义不要用null的原因分析
    上一篇:MySQL服务自动停止的解决方法
    下一篇:MySQL之递归小问题
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    mysql 求解求2个或以上字段为NULL的记录 mysql,求解,求,2个,或,以上,