假设以下
col1 col2 col3 col4
------+----------+---------+---------
abc | | |
是的,col1-4中有空格!
我想选择不是空格的列。在第1行它是col1,但在第20行它可能是col3,第55行它可能是col2,依此类推。我只需要返回该列。
在这四列范围内总会只有一列存储值,我只需要一个实际上有信息的列。
这将是报告的更大查询的一部分,因此无论列abc
是什么,我都需要在每个结果案例中看起来都相同。这意味着我不能将结果col1
用于一个案例而col2
用于另一个案例,因为报告无法识别。该列需要始终被称为相同。
是的,我知道最好存储NULLS与空格,以及为什么在只有一个可以拥有数据的情况下使用四列,为什么不使用一个。我已经抱怨了这一点,所以不要扯我一个关于糟糕数据库设计的新内容,因为我同意。
答案 0 :(得分:6)
SELECT LTRIM(RTRIM(col1 + col2 + col3 + col4))
我们开始......为什么不在糟糕的设计中添加错误的代码。您可以在技术上将所有列添加到一起,然后将它们修剪为前导/尾随空格。我不推荐它用于大规模部署的性能。哎呀,我不建议任何生产脚本,但我以前来过这里......要做你能做到的事情。
答案 1 :(得分:1)
为什么不使用CASE语句,例如
CASE WHEN col1 <> ' ' THEN col1
WHEN col2 <> ' ' THEN col2
WHEN col3 <> ' ' THEN col3
WHEN col4 <> ' ' THEN col4
END
答案 2 :(得分:0)
你可以这样做:
case
when col1 != '' then col1
when col2 != '' then col2
...
end