rt,在查詢時候需要查出字段為空或者為某個特定值的數據,但是又不想使用or去組合。使用函數IFNULL,
IFNULL(ca.is_on_sale,'1')
IFNULL() 函數用於判斷第一個表達式是否為 NULL,如果為 NULL 則返回第二個參數的值,如果不為 NULL 則返回第一個參數的值。
但當用於查詢條件時,查詢空數據需要注意。
(SELECT parent_id from menu where code = #{menuCode} and parent_id != 0)
當這條語句返回null時,整條語句的返回值都是空的(where分支比select分支優先執行),這時,等價於下面這條語句:
1 SELECT IFNULL(id,0) from project_menu where code = NULL
這就不是這個當id為空時,用0替換id返回這個概念了,因為當語句本身就是null時,語句中的函數就不會起作用
SELECT DISTINCT '新增' abilityType, CASE WHEN (cda.`order_from` = 0) THEN "A" WHEN (cda.`order_from` = 1) THEN "B" ELSE "其它" END AS orderFromFROM `comp_ability_apply` caa LEFT JOIN `comp_demand_apply` cda ON cda.id = caa.`apply_id` LEFT JOIN `comp_oparty` co ON co.`app_id` = cda.`app_id` LEFT JOIN comp_ability_ext_from_shop ca ON ca.`ability_name` = caa.`ability_name` AND ca.`ability_version` = caa.`version` WHERE caa.`status` = '0' AND IFNULL(ca.is_on_sale,'1') = '1'