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

posted @ 2023-07-26 10:33  TIM3347_Tian  阅读(55)  评论(0编辑  收藏  举报  来源