使用可空列中的notl null列创建SQL视图

时间:2016-12-14 10:53:03

标签: sql sql-server entity-framework-6

我正在尝试创建一个视图,并将其导入Entity Framework 6。 无法导入以下视图,因为两列都可以为空。 (表和列名称已更改,第二列用于计算日期时间列中的第一个月)

CREATE VIEW MyView AS
SELECT DISTINCT a.sometext Col1, DATEADD(m, DATEDIFF(m, 0, b.somedate), 0) Col2
FROM Table1 a INNER JOIN Table2 b ON a.Id = b.Id
WHERE a.sometext IS NOT NULL AND b.somedate IS NOT NULL

据我了解,如果两列都不为null,则EF将能够导入 风景。这是对的吗? 如何更改视图以使其工作?

1 个答案:

答案 0 :(得分:0)

您希望生成的表达式不可为空。 SQL Server使用函数ISNULL()执行此操作(尽管不使用COALESCE())。所以,你可以这样做:

CREATE VIEW MyView AS
    SELECT DISTINCT ISNULL(a.sometext, '') as Col1,
           ISNULL(DATEADD(month, DATEDIFF(mont, 0, b.somedate), 0), GETDATE()) as Col2
    FROM Table1 a INNER JOIN
         Table2 b
         ON a.Id = b.Id
    WHERE a.sometext IS NOT NULL AND b.somedate IS NOT NULL;
如果任何参数不可为空,则

ISNULL()不可为空。 COALESCE()要求所有参数都不可为空以继承此属性。

在文档中很难找到。这是讨论该主题的article