2011-08-26 3 views

答えて

3

私は思う:

合体(a.entity_idを、0) - a.entity_idがnullでない場合は1他、場合の結果として0を取得し、

を最初のNULLでない値を返します。

a.entity_id = NULL =>合体= 0 => = 1

a.entity_idがnullでない場合=>合体= a.entity_id => = 0

2

合体最初NONを返す場合-n ullの引数。したがって、a.entity_idがnullの場合、coalesceは0を返します。包含するif()は、引数がゼロでないかどうかをチェックし、0または1を返します。

基本的には、複雑な方法でa.entity_id IS NULLを書きます。

+4

'a.entity_id IS NULLまたはa.entity_id = 0' –

1

IF()の機能はです。基本的には、引数1(それはあなたがそのCOALESCEがやっていると理解ご質問から聞こえる。)

  • expr1がTRUEである場合には(expr1と<> 0とexpr1の<> NULLで供給されるブール式の三項演算子です)IF()はexpr2を返します。
  • expr1がFALSEの場合は、expr3を返します。

IF()は、それが使用される文脈に応じて、数字または文字列値を返します。

mysql> SELECT IF(1>2,2,3); 
     -> 3 
mysql> SELECT IF(1<2,'yes','no'); 
     -> 'yes' 
mysql> SELECT IF(STRCMP('test','test1'),'no','yes'); 
     -> 'no' 

それはa.entity_id IS NULLを使用していないのは本当にファンキーな非読める方法です。

0

は、私には見えます。

1

a.entity_idNULLない0ない値である場合、条件が満たされます。

関連する問題