2

私は何度も試しましたが、効果的ではありませんでした。

私が試した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

私はショー名が欲しいだけですNULLlinks.nameNULL の場合は取得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)
4

1 に答える 1

3

空の文字列を取得しています。つまりlinks.name、レコードのフィールドは NULL ではなく、空の文字列です。coalesce() は、本格的な SQLNULL値を実際に使用している場合にのみトリガーされます。空の文字列は null ではなく、たまたま空の文字列です。

多分これは効く

SELECT IF(links.name='', 'noname', links.name) AS owner
于 2013-08-29T15:18:20.423 に答える