SQL is null, SQL is not null

时间:2020-02-23 14:32:29  来源:igfitidea点击:

有时我们有允许空值的列。
在这种情况下,SQL IS NULL是一个非常有用的运算符。

SQL IS NULL运算符用于检查列的值是否为null。
运算符根据空列值过滤结果集。

让我们详细讨论一下IS NULL运算符。

SQL IS NULL

让我们快速了解一下SQL是null运算符语法。

SELECT Column(s) FROM table_name WHERE column IS NULL;

上面的查询将为我们提供结果集,其中指定的列值为null。

通过一些示例,我们将更详细地理解上述语法。

让我们考虑以下学生表格作为示例。

RollNoStudentNameStudentGenderStudentAgeStudentPercent
1GeorgeM1485
2MonicaF1288
3JessicaFnull84
4TomMnull78

方案:获取年龄为零的学生的百分比。

SELECT StudentPercent FROM Student WHERE StudentAge IS NULL;

输出:

StudentPercent
88
78

Oracle空字符串等效于NULL

空值不仅限于Oracle数据库中的null关键字,实际上,使用IS NULL运算符时,具有空值的列也被视为空值。
请注意,这些列类型应为VARCHAR而不是CHAR。

对于PostgreSQL数据库,我们发现了类似的行为,但在MySQL数据库中却没有。
因此,这似乎是数据库特定的行为。

让我们考虑以下"供应商"表作为示例。

ProductIdProductNameSupplierName
1CookieABC
2Cheese
3Chocolate
4JamXDE

场景:获取没有供应商名称的产品名称。

SELECT ProductName FROM Supplier WHERE SupplierName IS NULL;

输出:

ProductName
Cheese
Chocolate

SQL IS NOT NULL语句

如果WHERE子句中使用的列包含非null值,则使用SQL IS NOT NULL运算符过滤结果。

让我们详细讨论一下IS NOT NULL运算符。

语法:

SELECT Column(s) FROM table_name WHERE Column IS NOT NULL;

在上面的语法中,将为结果过滤不为null的列值。

让我们以先前定义的Supplier表为例。

场景:获取供应商名称不为null的产品的名称。

SELECT ProductName FROM Supplier WHERE SupplierName IS NOT NULL;

输出:

SupplierName
Cookie
Jam