我具有以下表结构:
ID | TXT1 | TXT2 | TXT3 | TXT4 |
我只想显示/获取该行的第一填充列。有没有简单的方法可以在sql中做到这一点?
目前,我有一个简单的Java IF语句来检查这一点。
例子:
ID | TXT1 | TXT2 | TXT3 | TXT4 |
1 | XX1 | XX2 | XX3 | |
2 | | YY2 | | YY4 |
如果ID == 1,那么我只想要TXT1的值。
如果ID == 2,那么我只想要TXT2的值,等等。
最佳答案
您可以使用COALESCE()
:
select t.*, COALESCE(TXT1, TXT2, TXT3, TXT4) as first_nonnull
假定“空”值为
NULL
。 COALESCE()
非常方便,如果字符串为空的''
而不是NULL
,则可以执行以下操作:select t.*,
COALESCE(NULLIF(TXT1, ''), NULLIF(TXT2, ''), NULLIF(TXT3, ''), NULLIF(TXT4, '')) as first_nonempty