我的数据库中有一个表,用于存储地址。地址可以是多行(1到6)
地址的每一行都存储为一个单独的列,最多6列。
我现在想循环遍历表中的每一行,并找到最后一个NOT NULL列的值。这可以是3,4,5或6列。
我需要一个SQL命令,在给定一行的情况下,我得到最后一列非空的值。
答案 0 :(得分:4)
只需使用COALESCE()
返回第一个非空值:
SELECT COALESCE(Address6, Address5, Address4, Address3) AS LastNonNullValue
FROM YourTable
答案 1 :(得分:3)
这取决于你最后一个非空列的含义。我假设你的意思是'给出这个列表,返回第一个带值',列表是[6,5,4,3]。如果是这样,请使用:
SELECT COALESCE(col6, col5, col4, col3)
FROM AddressTable
WHERE rowId = :input
COALESCE()
函数返回解析为非null的第一个值,如果所有值都为null,则返回null。
答案 2 :(得分:2)
答案 3 :(得分:0)
这样的东西会给你列号:
select
left(coalesce('0'+address6, '6'+address5, '5'+address4, '4'+address3, '3'+address2, '2'+address1, '1'),1)
from @Address