SQL查询过滤X2时保留Status为NULL的行
SQL查询保留NULL行及NULL转空字符串的解决方案
一、实现保留NULL行的查询
SQL里NULL和任何值做比较的结果都是UNKNOWN,所以Status != 'X2'会自动过滤掉NULL行。要同时拿到X1和NULL的行,有两种直接可行的写法:
- 直接在WHERE条件里单独判断NULL:
SELECT * FROM surrtest t WHERE t.Status != 'X2' OR t.Status IS NULL - 用
COALESCE函数把NULL转成一个不会等于X2的默认值(比如空字符串)再做比较:SELECT * FROM surrtest t WHERE COALESCE(t.Status, '') != 'X2'
二、不修改数据将NULL转为空字符串
如果需要在查询结果里把NULL显示为空字符串,完全不需要改动原表数据,直接在SELECT字段里处理即可:
- 通用写法(大部分数据库支持
COALESCE):SELECT t.*, COALESCE(t.Status, '') AS Status_Display FROM surrtest t WHERE t.Status != 'X2' OR t.Status IS NULL - 针对特定数据库的写法:
- MySQL/MariaDB用
IFNULL:SELECT t.*, IFNULL(t.Status, '') AS Status_Display FROM surrtest t WHERE t.Status != 'X2' OR t.Status IS NULL - SQL Server用
ISNULL:SELECT t.*, ISNULL(t.Status, '') AS Status_Display FROM surrtest t WHERE t.Status != 'X2' OR t.Status IS NULL
- MySQL/MariaDB用
内容的提问来源于stack exchange,提问作者Codernew
相关产品推荐
相关产品推荐

