最少几列忽略零和零
答
有一个LEAST
功能,但它不会忽略NULL值,所以你需要用些额外的逻辑就像
LEAST(COALESCE(NULLIF(col1,0), 999999)
,COALESCE(NULLIF(col2,0), 999999)
,COALESCE(NULLIF(col3,0), 999999))
对于99999
你应该使用比任何现有的值。 如果所有列可能是空或零,你必须添加一个最终
NULLIF(LEAST(....), 99999)
在这种情况下,返回NULL。
答
那么,你可以排序的使用least()
:
select least(col1, col2, col3)
这是棘手与0
S和NULL
秒。你不指定类型的列,但您可以使用NULLIF()
和COALESCE()
正数值:
select least(coalesce(nullif(col1, 0), 999999999),
coalesce(nullif(col2, 0), 999999999),
coalesce(nullif(col2, 0), 999999999)
)
当然,这将返回特殊值999999999
如果所有值均为0
或NULL
。
谢谢。刚学到最少。但它会不会返回零?例如:1 2 3 0 => 0 – cs0815
当然,我忘了零,添加了'NULLIF' – dnoeth
行。明天再试。 – cs0815