Sql server 如何将布尔字段从视图中的可空列中删除?(SQL Server)

Sql server 如何将布尔字段从视图中的可空列中删除?(SQL Server),sql-server,view,Sql Server,View,我在数据库中创建了一个视图。在这种情况下,Score可以为空 SELECT Student.Name, Score.Score FROM Student JOIN Score ON Student.StudentID = Score.StudentID 现在,我想根据Score的值向这个视图添加一个名为“IfScoreIsNull”的列。如果Score不为NULL,则IfScoreIsNull将为0。否则,它将是1 基本上,我希望布尔字段由分数列是否为空来驱动 实现这一目标的最佳方式是什么?谢

我在数据库中创建了一个视图。在这种情况下,Score可以为空

SELECT Student.Name, Score.Score
FROM Student JOIN Score ON Student.StudentID = Score.StudentID
现在,我想根据Score的值向这个视图添加一个名为“IfScoreIsNull”的列。如果Score不为NULL,则IfScoreIsNull将为0。否则,它将是1

基本上,我希望布尔字段由分数列是否为空来驱动

实现这一目标的最佳方式是什么?谢谢

你可以用一个。这对于有条件地返回数据非常有用。以下是一个例子:

CASE WHEN Score.Score IS NULL THEN 1 ELSE 0 END AS IfScoreIsNull
这将使你充分声明:

SELECT 
    Student.Name, 
    Score.Score,
    CASE WHEN Score.Score IS NULL THEN 1 ELSE 0 END AS IfScoreIsNull
FROM 
    Student 
        INNER JOIN Score ON Student.StudentID = Score.StudentID
;
EDIT:在我最初的回答中,我错误地将case表达式称为case语句。语句是更常见的形式。许多语言都有这些,他们已经习惯了。在SQL中,我们有大小写表达式。它们返回基于布尔表达式的标量值。

您可以使用。这对于有条件地返回数据非常有用。以下是一个例子:

CASE WHEN Score.Score IS NULL THEN 1 ELSE 0 END AS IfScoreIsNull
SELECT 
    Student.Name, 
    Score.Score, 
    CASE WHEN Score.Score IS NULL THEN 1 ELSE 0 END AS IfScoreIsNUll
FROM Student JOIN Score ON Student.StudentID = Score.StudentID
这将使你充分声明:

SELECT 
    Student.Name, 
    Score.Score,
    CASE WHEN Score.Score IS NULL THEN 1 ELSE 0 END AS IfScoreIsNull
FROM 
    Student 
        INNER JOIN Score ON Student.StudentID = Score.StudentID
;

EDIT:在我最初的回答中,我错误地将case表达式称为case语句。语句是更常见的形式。许多语言都有这些,他们已经习惯了。在SQL中,我们有大小写表达式。它们返回基于布尔表达式的标量值。

您可以在Sql Server 2012+中执行此操作。使用

SELECT 
    Student.Name, 
    Score.Score, 
    CASE WHEN Score.Score IS NULL THEN 1 ELSE 0 END AS IfScoreIsNUll
FROM Student JOIN Score ON Student.StudentID = Score.StudentID

您可以在Sql Server 2012+中执行此操作。使用