代码之家  ›  专栏  ›  技术社区  ›  Bora

COALESCE不适用于CodeIgniter

  •  2
  • Bora  · 技术社区  · 12 年前

    我试了很多次,但都没有效果。

    我尝试了3个查询:

     $query = $this->db->query("SELECT COALESCE(links.name, 'noname') as owner FROM links");
    
     $query = $this->db->query("SELECT COALESCE(links.name, users.username) as owner FROM links");
    
     $this->db->select("COALESCE(links.name, 'noname') as owner", false);
    
    1. 已加入用户表
    2. 在没有加入的情况下尝试
    3. CodeIgniter版本 2.1.4
    4. MySql版本 5.5.24

    我只想要节目名称,而不是 NULL 如果 links.name 为NULL,获取 users.username

    但我想不通。

    结果总是随之而来

      0 => 
        array (size=1)
          'owner' => string 'John Doe' (length=9)
      1 => 
        array (size=1)
          'owner' => string '' (length=0)
      2 => 
        array (size=1)
          'owner' => string '' (length=0)
    
    1 回复  |  直到 5 年前
        1
  •  4
  •   Marc B    12 年前

    你得到的是空字符串。这意味着 links.name 记录中的字段不是NULL,而是一个空字符串。只有当您实际使用的是一个完整的blowinSQL时,coalize()才会触发 NULL 价值空字符串不是null,它们只是碰巧为空的字符串。

    也许这会奏效

    SELECT IF(links.name='', 'noname', links.name) AS owner
    
    推荐文章