• 售前

  • 售后

热门帖子
入门百科

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

[复制链接]
yhzdmb342 显示全部楼层 发表于 2021-10-25 19:33:23 |阅读模式 打印 上一主题 下一主题
焦点代码
  1. /*--------------------------------
  2. 求2个或以上字段为NULL 的记录
  3. t1:
  4. id, id1, id2, id3, id4, id5, id6
  5. 在t1 表中有个字段;
  6. 其中id是主键;
  7. 怎样打印其中个字段或以上为NULL 的记录id?
  8. 另外,存储过程中怎么实现按顺序一条一条读取记录最方便?
  9. 注:主键id 是没有顺序的,也可能是字符串的;
  10. -----------------------------------------*/
  11. drop table if exists t1;
  12. create table t1(id int,id1 int,id2 int,id3 int,id4 int,id5 int,id6 int);
  13. insert t1 select
  14. 1,1,1,1,1,null,null union all select
  15. 2,null,null,null,1,2,3 union all select
  16. 3,1,2,3,4,5,6 union all select
  17. 4,1,2,3,4,5,null union all select
  18. 5,null,3,4,null,null,null ;
  19. delimiter $$
  20. create procedure usp_c_null()
  21. begin
  22. declare n_c int;
  23. declare idd int;
  24. declare cur cursor for
  25. select id,case char_length(concat(ifnull(id1,'@'),ifnull(id2,'@'),ifnull(id3,'@'),ifnull(id4,'@'),ifnull(id5,'@'),ifnull(id6,'@')))
  26. -char_length(replace(concat(ifnull(id1,'@'),ifnull(id2,'@'),ifnull(id3,'@'),ifnull(id4,'@'),ifnull(id5,'@'),ifnull(id6,'@')),'@','') )
  27. 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;
  28. declare exit HANDLER for not found close cur ;
  29. open cur;
  30. repeat
  31. fetch cur into idd,n_c;
  32. if(n_c>=2) then
  33. select * from t1 where id=idd;
  34. end if ;
  35. until 0 end repeat;
  36. close cur;
  37. end ;
  38. $$
  39. delimiter ;
  40. /*
  41. +------+------+------+------+------+------+------+
  42. | id  | id1 | id2 | id3 | id4 | id5 | id6 |
  43. +------+------+------+------+------+------+------+
  44. |  1 |  1 |  1 |  1 |  1 | NULL | NULL |
  45. +------+------+------+------+------+------+------+
  46. 1 row in set (0.10 sec)
  47. +------+------+------+------+------+------+------+
  48. | id  | id1 | id2 | id3 | id4 | id5 | id6 |
  49. +------+------+------+------+------+------+------+
  50. |  2 | NULL | NULL | NULL |  1 |  2 |  3 |
  51. +------+------+------+------+------+------+------+
  52. 1 row in set (0.14 sec)
  53. +------+------+------+------+------+------+------+
  54. | id  | id1 | id2 | id3 | id4 | id5 | id6 |
  55. +------+------+------+------+------+------+------+
  56. |  5 | NULL |  3 |  4 | NULL | NULL | NULL |
  57. +------+------+------+------+------+------+------+
  58. 1 row in set (0.17 sec)
  59. */
复制代码

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作