zoukankan      html  css  js  c++  java
  • MySQL NULL处理

    -- 首先在用户表中插入数据如下

    TRUNCATE TABLE UserInfo ; 

    INSERT  INTO `userinfo`(`ID`,`UserName`,`UserLogin`,`UserPassword`,`UserEmail`,`UserType`)

    VALUES (1,'张三','zhangsan','zhangsan','zhangsan@qq.com',1),

    (2,'李四','lisi','lisi','lisi@qq.com',2),

    (3,'王五','wangwu','wangwu','wangwu@qq.com',1),

    (4,'赵六','zhaoliu','zhaoliu','zhaoliu@qq.com',3),

    (5,'赵六','zhaoliu1','zhaoliu1','zhaoliu1@qq.com',3),

    (6,NULL,'test1','test1',NULL,NULL),

    (7,NULL,'test2','test2',NULL,NULL),

    (8,NULL,'test3','test3',NULL,NULL),

    (9,'','TEST5','TEST5','',1),

    (10,'','TEST6','TEST6','',2),

    (11,'','TEST7','TEST7','',3),

    (12,'','TEST8','TEST8','',1),

    (13,'','TEST9','TEST9','',2),

    (14,'','TEST0','TEST0','',3); 

     

      

    -- 查询用户名为空(null)的用户信息

    SELECT * FROM UserInfo WHERE userName IS NULL ;

     

    SELECT * FROM UserInfo WHERE ISNULL(UserName) ;

     

    -- 查询用户名为空字符串('') 的用户信息

    SELECT * FROM UserInfo WHERE UserName ='' ;

     

      

    -- 查询用户名为 不为空(null)的用户信息    !=null 和 is not null 是不同的 默认情况下 !=null 返回0行结果 

    筛选非空的时候经常会用到is not null和!=null,这两种方法单从字面上来看感觉是差不多的,其实运行结果差别很大!

    null 表示什么也不是, 不能=、>、< … 所有的判断,结果都是false,所有只能用 is null进行判断。默认情况下,推荐使用 is not null去判断,因为SQL默认情况下对 !=null 的判断会永远返回0行,但没有语法错误;

    SELECT * FROM UserInfo WHERE userName IS NOT NULL ;

     

      

    SELECT * FROM UserInfo WHERE UserName != NULL ; 

     

    -- 查询用户名 不为空字符串('') 并且不为空(null) 的用户信息

    SELECT * FROM UserInfo WHERE UserName <> '' ; 

     

      

    -- 还有一个问题就是count(columnName)函数是不统计null值的

    SELECT COUNT(*) FROM UserInfo ;

     

      

    SELECT COUNT(UserName) FROM UserInfo ;

     

      

    -- IFNULL函数使用

    -- IFNULL(expr1,expr2)  如果expr1不是NULL,返回expr1,否则它返回expr2。

    SELECT *,IFNULL(UserName,'无效用户') AS Remark FROM UserInfo

     

      

    SELECT IFNULL(0,1) ;

      

    SELECT IFNULL(0/1,'代替null') ;.

     

    SELECT IFNULL(1/0,'代替null') ;

     

    -- 扩展IF函数

    -- IF(expr1,expr2,expr3)  如果expr1是TRUE(expr1<>0且expr1<>NULL),返回expr2,否则它返回expr3。 

    SELECT IF(TRUE,'true值','false值') ;

     

    SELECT IF(FALSE,'true值','false值') ;

     

    SELECT IF(1>2,1,2) ;

     

    SELECT IF(1<2,2,1) ;

     

  • 相关阅读:
    【奇妙dp】ARC107D Number of Multisets
    【最短路-拆点】ARC061Cすぬけ君の地下鉄旅行/Snuke's Subway Trip
    【数学-思维-枚举方式】ARC060B 桁和/Digit Sum
    ARC107C Shuffle Permutation【有脑就行qwq/完全不知道怎么分类嘛】
    【kmp-循环节】ARC060D 最良表現/Best Representation
    【简单dp】ARC059C キャンディーとN人の子供 / Children and Candies
    【状压】ARC058E 和風いろはちゃん / Iroha and Haiku
    快速乘
    Miller Rabin素数测试和Pollard Rho算法
    JAVA补充-接口
  • 原文地址:https://www.cnblogs.com/zhaochengshen/p/5612125.html
Copyright © 2011-2022 走看看