Case when易錯點

易錯一

  • 第一段代碼
SELECT parent_item_id,CASE parent_item_id WHEN parent_item_id=45 THEN 1 ELSE 0 END
FROM ih_record_table_item WHERE ih_rt_id=2;
  • 第二段代碼
SELECT parent_item_id,CASE WHEN parent_item_id=45 THEN 1 ELSE 0 END
FROM ih_record_table_item WHERE ih_rt_id=2;
  • 第三段代碼
SELECT parent_item_id,CASE parent_item_id WHEN 45 THEN 1 ELSE 0 END
FROM ih_record_table_item WHERE ih_rt_id=2;
  • 第一個結果
NULL0
NULL0
NULL0
NULL0
NULL0
NULL0
NULL0
190
190
190
NULL0
240
240
240
240
240
240
240
240
240
240
240
240
240
240
240
240
240
240
240
NULL0
NULL0
450
450
450
NULL0
450
NULL0
NULL0
NULL0
NULL0
  • 第二個結果
NULL0
NULL0
NULL0
NULL0
NULL0
NULL0
NULL0
190
190
190
NULL0
240
240
240
240
240
240
240
240
240
240
240
240
240
240
240
240
240
240
240
NULL0
NULL0
451
451
451
NULL0
451
NULL0
NULL0
NULL0
NULL0
  • 第三個結果
NULL0
NULL0
NULL0
NULL0
NULL0
NULL0
NULL0
190
190
190
NULL0
240
240
240
240
240
240
240
240
240
240
240
240
240
240
240
240
240
240
240
NULL0
NULL0
451
451
451
NULL0
451
NULL0
NULL0
NULL0
NULL0
  • 結論
    根據前面的三條語句和結果可看出第二個和第三個的結果一致的,對於第一個查詢其實是有問題的,case裏面其實對比的是一個true 和 false,此處如果寫查詢不夠謹慎,就會容易出現這樣的bug。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章