无法在sql数据库中检查空值

Ale*_*r R 3 sql sql-server f#

使用F#查询语法我试图获取某个字段不为空的所有记录,但我似乎无法找到一种方法.

首先,我试图:

query {
    for h in dc.Table do
    where (h.SectorId <> null)
    select h
}
Run Code Online (Sandbox Code Playgroud)

但是,错误陈述The type 'Nullable<Guid>' does not have 'null' as a proper value. To create a null value for a Nullable type use 'System.Nullable()'.因此,更换nullNullable()的建议,我用:

query {
    for h in dc.Table do
    where (h.SectorId <> Nullable())
    select h
}
Run Code Online (Sandbox Code Playgroud)

当我在LINQPad中使用上述查询时,它不会检索任何值,即使我知道它们存在.问题似乎出现在SQL中:

-- Region Parameters
DECLARE @p0 UniqueIdentifier = null
-- EndRegion
SELECT [t0].[Id], [t0].[Name], [t0].[SectorId], [t0].[Blah], [t0].[Meh], [t0].[DisplayOrder]
FROM [Table] AS [t0]
WHERE [t0].[SectorId] <> @p0
Run Code Online (Sandbox Code Playgroud)

当然这不会起作用,因为NULL <> NULL在SQL中总是假的; 应该阅读的地方WHERE [t0].[SectorId] is not null.如何在F#查询中检查null?

Dan*_*iel 6

尝试

query {
    for h in dc.Table do
    where h.SectorId.HasValue
    select h
}
Run Code Online (Sandbox Code Playgroud)