【问题标题】:IS NOT NULL returns all rows including column with NULLIS NOT NULL 返回所有行,包括具有 NULL 的列
【发布时间】:2013-10-19 02:57:36
【问题描述】:

我有一个包含多个列的数据库,但我只对获取两列 col-A 和 col-B 感兴趣,条件是该行将具有: col-A 是任何值 & col-B 必须不是 NULL。

我很好地搜索了这个论坛,并且在最简单的尝试中,下面给出了一个:

SELECT col-A,col-B FROM ports WHERE col-B IS NOT NULL; 

当我运行此查询时,它会转储包含以下行的两列:(请注意——这里的“端口”是表)

col-A = ANY VALUE + col-B = NULL(blank/empty field)
col-A = ANY VALUE + col-B = NON NULL

即使我尝试过。最通用的语法:

SELECT * FROM ports WHERE col-B IS NOT NULL; <<<< it dumps both empty & non-empty rows

MySQL 版本是 5.5.32。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    检查两个条件:空白和null

    SELECT col-A,col-B 
    FROM ports 
    WHERE col-B IS NOT NULL and col-B <> ''
    

    空白不是nullnull 表示无值,空白空字符串为''

    【讨论】:

    • @plainjane:接受完全取决于 OP。请不要打电话给别人。
    【解决方案2】:

    @uergen d 的答案很好用。但是,如果您想尝试其他方法,请检查此

    SELECT col-A,col-B 
    FROM ports 
    WHERE LENGTH(col-B) > 0
    

    【讨论】:

      猜你喜欢
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-22
      相关资源
      最近更新 更多