我知道这是“不是内置”或“dba思考的方式”,而是一种程序员方法,如何从3个字段请求获取非空的,进入结果字段。
假设我们有一张f1,f2,f3,f4,f5.
假设f2,f3,f4
是同一类型。
假设表的内容是
的元组(key1,null,null,value1,value2)
(key2,null,value3,value4,value5)
(key3,null,null,null,value6)
现在如果我们返回第一个元组,那么我们得到(key1)得到(key1,value1,value2)
如果我们要求key2,我们会得到(key1,value3,value5)
如果我们要求key3,我们会获得(key1,null,value6)
如果你在f2中有值,那么如何获得优先级的字段,然后将其设置到返回的字段中,只有当我们在f3中有值然后将其设置到中间返回字段时,才有可能获得优先级,我们在f4中有值,然后将其设置到中间返回的字段
主要目标是将结果放入单个字段,并防止结果所需的开销工作。
答案 0 :(得分:4)
正如Bernd_k所说,COALESCE是你的朋友
SELECT [key], COALESCE(f2, f3, f4), f5
FROM YourTable
答案 1 :(得分:2)
Select IsNull(IsNull(f1, f2), f3))