SQL |仅选择第一个填充列

时间:2017-11-06 11:59:44

标签: mysql

我有以下表结构:

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等的值。

2 个答案:

答案 0 :(得分:2)

您可以使用COALESCE()

select t.*, COALESCE(TXT1, TXT2, TXT3, TXT4) as first_nonnull

这假设"空"值为NULLCOALESCE()非常方便,如果字符串为空''而不是NULL,则可以执行以下操作:

select t.*,
       COALESCE(NULLIF(TXT1, ''), NULLIF(TXT2, ''), NULLIF(TXT3, ''), NULLIF(TXT4, '')) as first_nonempty

答案 1 :(得分:1)

试试这个答案:

SELECT CASE WHEN TXT1!='' THEN TXT1 
            WHEN TXT2!='' THEN TXT2 
            WHEN TXT3!='' THEN TXT3 
            WHEN TXT4!='' THEN TXT4 END
FROM Your_Table
WHERE ID=1