【问题标题】:Can I make WHERE col LIKE '%' select NULL values too?我也可以让 WHERE col LIKE '%' 选择 NULL 值吗?
【发布时间】:2011-08-20 02:34:12
【问题描述】:

我正在尝试使用语法 WHERE col LIKE '%' 从 MySQL 数据库中进行选择,但我想使用该查询甚至选择 NULL 值。是否有一些命令/操作符可以选择任何数据,包括null

【问题讨论】:

    标签: mysql select


    【解决方案1】:

    如果你想在 java createQuery 中使用 COALESCE 而不是 IFNULL

    WHERE COALESCE (xxx, '') LIKE '%'
    

    【讨论】:

      【解决方案2】:

      如果你想要 column1 LIKE '%' 并且想要 column1 IS NULL,为什么不直接删除 WHERE 子句?

      试试:

      SELECT * FROM TABLE;
      

      这是我尝试过的:

      mysql> create table foo (a char(30));
      Query OK, 0 rows affected (0.02 sec)
      
      mysql> insert into foo values ( '' );
      Query OK, 1 row affected (0.01 sec)
      
      mysql> insert into foo values ( NULL );
      Query OK, 1 row affected (0.00 sec)
      
      mysql> select * from foo;
      +------+
      | a    |
      +------+
      |      |
      | NULL |
      +------+
      2 rows in set (0.00 sec)
      
      mysql> select * from foo where a like '%' or a is null;
      +------+
      | a    |
      +------+
      |      |
      | NULL |
      +------+
      2 rows in set (0.00 sec)
      
      mysql> select * from foo where ifnull (a, 1) like '%';
      +------+
      | a    |
      +------+
      |      |
      | NULL |
      +------+
      2 rows in set (0.00 sec)
      
      mysql> 
      

      毕竟,IFNULL(column1, 1) LIKE '%' 实际上是一个 NO-OP ...

      【讨论】:

      • 如果您的WHERE 子句有多个AND 条件,而您仍希望可能缩小为空字段的结果范围,该怎么办?那么你仍然需要WHERE 子句。
      【解决方案3】:

      此语句返回除 column1 中为 NULL 的行之外的所有行

      SELECT * FROM table WHERE column1 LIKE '%'
      

      要获取所有行,包括 column1 中包含 NULL 的行,请使用以下命令:

      SELECT * FROM table WHERE IFNULL(column1,1) LIKE '%'
      

      来自 MySQL 文档:

      IFNULL(expr1,expr2)

      如果 expr1 不为 NULL,IFNULL() 返回 expr1;否则返回 expr2。 IFNULL() 返回一个数字或字符串值,具体取决于使用它的上下文。

      但是有一个警告:如果您在 column1 上有一个索引,则不会在此查询中使用它,因此在较大的表中事情可能会变慢...

      【讨论】:

        【解决方案4】:
        SELECT * FROM table WHERE (job LIKE '%' OR job IS NULL)
        

        【讨论】:

          【解决方案5】:

          使用 IFNULL 运算符

          WHERE IFNULL(xxx, '') LIKE '%'
          

          【讨论】:

          • 工作就像一个魅力!
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-09-23
          • 1970-01-01
          • 1970-01-01
          • 2016-12-18
          • 2021-03-27
          • 1970-01-01
          • 2021-09-14
          相关资源
          最近更新 更多