mysql - 数据库 |仅选择第一个填充的列

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

最佳答案

您可以使用 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

关于mysql - 数据库 |仅选择第一个填充的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47136571/

相关文章:

MySQL主键必须写在括号内

mysql查询: match against using wildcard

mysql - 分组及订单

mysql - SQL 语句返回 null 而不是空

mysql - 在数据库日期字段中仅保留 dd-MM-yyyy

SQL 删除低计数

mysql - 解决 Homebrew 警告而不造成不良影响

MySQL 子查询与 LIMIT 与 JOIN

MySQL 如果一行出现两次只显示一次,但如果它出现 n 次(不能是两次)则显示它的名字 n 次?

php - 我的 php 脚本将空白信息输入到 mysql 数据库中!