我有以下表结构:
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
关于mysql - 数据库 |仅选择第一个填充的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47136571/