2014-01-10 65 views
3

我想在一个MySQL表,其中有NULL值的选择项,到后来做一个更新或对他们删除:MySQL如何检查列表中的任何值是否为NULL?

select * from table where q is NULL; 

但我有一个相当长的人名单,在这种情况下,所有的都有一个给定的前缀pf_,我想选择任何列为NULL的条目。我可以做这样的事吗?

select * from table where ANYISNULL(pf_q,pf_w,pf_e,pf_r,pf_t,pf_y,pf_u,pf_i, 
            pf_o,pf_p,pf_a,pf_s,pf_d,pf_f,pf_g,pf_h, 
            pf_j,pf_k,pf_l); 

任何想法如何做到这一点,而不是有很多ORs很长的查询?

回答

9

你应该这样做:

select * from table where concat(pf_q,pf_w,pf_e,pf_r,pf_t,pf_y,pf_u,pf_i, 
           pf_o,pf_p,pf_a,pf_s,pf_d,pf_f,pf_g,pf_h, 
           pf_j,pf_k,pf_l) is null; 

如果任何值是零,concat将返回null。

+1

这就是一些“外挂”的想法。工作很好。 – dwjv

+0

这真是该死的性感,@迈克尔 –

相关问题