忽略列如果列值为null或空对MySQL表搜索
问题描述:
SELECT logic_id
FROM business_logic_details
WHERE if(form_completion != 0.00,form_completion,0) = '90'
AND if(query_type IS NOT NULL
OR query_type !='',query_type,0) LIKE '%domestic%'
AND if(client_type IS NOT NULL
OR client_type !='',client_type,0) LIKE '%existing%'
AND if(tour_package IS NOT NULL
OR tour_package !='',tour_package,0) LIKE '%S%'
AND if(tour_type IS NOT NULL
OR tour_type !='',tour_type,0) LIKE '%2%'
AND if(currency IS NOT NULL
OR currency !='',currency,0) = 'INR'
AND if(country IS NOT NULL
OR country !='',country,0) = '105'
AND if(adults IS NOT NULL
OR adults !='',adults,0) = '1'
AND if(duration_of_stay IS NOT NULL
OR duration_of_stay !='',duration_of_stay,0) = '5'
ORDER BY logic_id ASC
答
对于使用COALESCE功能:
SELECT logic_id
FROM business_logic_details
WHERE COALESCE(form_completion, 90) = 90
AND COALESCE(query_type, 'domestic') LIKE '%domestic%'
...
我也强烈建议比较整数作为整数,而不是字符串:
好:0 = 90
不好:0 = '90'
+0
这不是预期的返回result.same结果作为我的查询返回。 –
+0
编辑我的答案以反映您的需求。将第二个参数作为期望值,所以在空值的情况下它将被评估为真。 –
+0
是的,我得到了预期的结果。谢谢,我真的很感谢你的帮助。 –
只是评论...你真的需要在你的'query_type'和'client_type'列使用通配符? – Bustikiller
是的,这些列有逗号分隔值。我们将搜索这些逗号分隔值中的一个或多个值。 –