【问题标题】:An expression of non-boolean type specified in context where a condition is expected在预期条件的上下文中指定的非布尔类型的表达式
【发布时间】:2013-03-11 23:49:06
【问题描述】:

在上下文中指定的非布尔类型的表达式,当我将鼠标悬停在顶行时,预期条件见图片:

Sql image problem

SELECT Bookings.Date, Bookings.Timebegan, Bookings.Timefinished, Bookings_1.Date, Bookings_1.Timebegan, Bookings_1.Timefinished, 
              Bookings.RoomID, Bookings_1.RoomID
FROM     Bookings,
              Bookings AS Bookings_1
WHERE Not Nz(([Bookings_1].[Timebegan]>=[Bookings].[Timefinished]) Or
  ([Bookings_1].[Timefinished]<=[Bookings].[Timebegan]) Or
  ([Bookings].[RoomID]!=[Bookings_1].[RoomID]) Or
  ([Bookings].[ID]=[Bookings_1].[ID]),False)
ORDER BY Bookings.ID, Bookings_1.ID;

有人知道吗?

【问题讨论】:

  • 您是否从 MS Access 运行查询?
  • 什么是新西兰?此外,!= 不是有效的 SQL。
  • 从您的屏幕截图看来,您正在 SQL Server Management Studio 中运行查询。 NZ() 是一个 VBA 函数,它检查参数是否为空并替换为空字符串,或者在您的情况下:false。 SQL Server 中不存在此函数,因此您会收到错误消息。删除 NZ,然后重试。
  • 谢谢,在 sql 中有没有 Nz 的替代品,我会删除 !=
  • 如何在 C# 中使用它来输出显示日期时间和发生冲突的房间的消息?

标签: sql wpf database visual-studio-2010


【解决方案1】:

很好的谜语(德摩根定律提醒 ;])。试试这个:

WHERE  
    (
        [Bookings_1].[Timebegan] is NULL
        OR [Bookings].[Timefinished] is NULL
        OR [Bookings_1].[Timefinished] is NULL
        OR [Bookings].[Timebegan] is NULL
        OR [Bookings].[RoomID] is NULL
        OR [Bookings_1].[RoomID] is NULL
        OR [Bookings].[ID] is NULL
        OR [Bookings_1].[ID] is NULL
        OR 
        (
         [Bookings_1].[Timebegan]<[Bookings].[Timefinished]
         AND [Bookings_1].[Timefinished]>[Bookings].[Timebegan] 
         AND [Bookings].[RoomID]=[Bookings_1].[RoomID]
         AND [Bookings].[ID]<>[Bookings_1].[ID]
        )
    )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 2021-02-26
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多