SQL中与NULL相关的操作
1. 空值判断
1.1 不可以在WHERE语句中使用=运算符判断字段是否为NULL
在SQL中,三值逻辑是指某个条件为真、假或未知。当涉及到null值时,条件的结果可能是未知的。这意味着无法直接使用等号(=)进行null值的比较。
示例:
SELECT * FROM table_name WHERE name = NULL;
这个语句执行的结果时返回一个空表。因为表中的null表示未知数。这与Python的NaN有着异曲同工之妙。我们应该使用 IS NULL来判断。
1.2 应当使用IS NULL来判断NULL
正确的示例如下:
SELECT * FROM table_name WHERE name IS NULL;
同理,我们用 IS NOT NULL运算符来选出非NULL的行,示例:
SELECT * FROM table_name WHERE name IS NOT NULL;
2. 其它的相关函数
2.1 IFNULL函数
MySQL 中的 ifnull,接受两个参数,它类似于三目运算符,但又有些许不同。ifnull 包含两个参数,语法如下:
IFNULL(expression_1,expression_2);
ifnull 会判断 expression_1 的值,如果 expression_1 不为 null,则函数返回 expression_1;否则,函数返回 expression_2。
注:参考了https://www.yiibai.com/mysql/ifnull.html
示例如下:
//MySQL的IFNULL函数示例
//请参见以下IFNULL函数示例:
//示例-1
SELECT IFNULL(1,0); //返回1
//示例-2
SELECT IFNULL('',1); //返回字符串''
//示例-3
SELECT IFNULL(NULL,'IFNULL function'); //返回字符串'IFNULL function'
2.2 NULLIF函数
MySQL 中的 nullif 函数,接受两个参数。如果第一个参数等于第二个参数,则 nullif 函数返回 null,否则返回第一个参数。
nullif 函数语法如下:
NULLIF(expression_1,expression_2);
注:参考了https://www.yiibai.com/mysql/ifnull.html
示例如下:
NULLIF(1,1)//返回NULL,因为1等于1。
NULLIF(1,2)//返回1,这是第一个参数,因为1不等于2。
NULLIF('MySQL NULLIF','MySQL NULLIF')//返回NULL,因为两个参数是相同的字符串。
NULLIF('MySQL NULLIF','MySQL NULLIF')//返回MySQL NULLIF,因为两个字符串不相等。
NULLIF(1,NULL)//返回1,因为1不等于NULL。
NULLIF(NULL,1)//返回第一个参数,即NULL,因为NULL不等于1。
2.3 COALESCE函数
COALESCE函数用于检查字段是否为null,并提供一个替代值。如果字段为null值,则COALESCE函数返回替代值,否则返回字段的原始值。与IFNULL不同的是COALESCE函数可以拥有多个参数。
返回从左至右第一个非空表达式的值。
COALESCE(expr1, expr2, ...., expr_n)
示例如下:
SELECT COALESCE(name, 'Unknown') FROM table_name;
name字段为NULL返回字符串'Unknown',反之返回name字段。
END
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南