在上下文中指定的非布尔类型的表达式

2020-08-26 18:04发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我在where子句中添加了一个查询,如下所示:

" dbo.CustomerServiceDetails.ServiceEndDate>转换(SMALLDATETIME,{fn CURDATE()})或isull(dbo.CustomerServiceDetails.ServiceEndDate,'2500-01-01')"

执行时给我一个错误:" 在需要条件的上下文中在')'附近输入的非布尔类型的表达式。"

请在我错的地方提供帮助。

谢谢

Vaibhav

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我在where子句中添加了一个查询,如下所示:

" dbo.CustomerServiceDetails.ServiceEndDate>转换(SMALLDATETIME,{fn CURDATE()})或isull(dbo.CustomerServiceDetails.ServiceEndDate,'2500-01-01')"

执行时给我一个错误:" 在需要条件的上下文中在')'附近输入的非布尔类型的表达式。"

请在我错的地方提供帮助。

谢谢

Vaibhav

付费偷看设置
发送
3条回答
木偶小白
1楼 · 2020-08-26 18:47.采纳回答

如果您应该始终在字段中进行IsNull检查,然后再检查该字段中的值。 这是因为将任何内容与null值进行比较都会得出null的结果,而不是true或false。

但是,真正的问题是OR后面的公式部分不会返回true或false。 isnull(dbo.CustomerServiceDetails.ServiceEndDate,'2500-01-01')返回日期值。 我可以将where子句更改为此:

(dbo.CustomerServiceDetails.ServiceEndDate为null或
 dbo.CustomerServiceDetails.ServiceEndDate>转换(SMALLDATETIME,{fn CURDATE()}))

您会注意到我在整个语句周围加上了括号。 如果where子句中有其他条件,则没有括号将无法正常工作,因为" and"和" or"是从左到右评估的,而不是在周围的" and"之前被评估的" or"。/p>

另一个选项可能是:

 isnull(dbo.CustomerServiceDetails.ServiceEndDate,'2500-01-01')>转换(SMALLDATETIME,{fn CURDATE()})

我更喜欢这一点,因为它更简单,但应该返回相同的结果。

-Dell

浮生未央
2楼-- · 2020-08-26 18:46

谢谢您Dell Stinnett-Christy 解决了我的问题。

Nan4612
3楼-- · 2020-08-26 18:39

猜测,但尝试添加括号:

(dbo.CustomerServiceDetails.ServiceEndDate>转换(SMALLDATETIME,{fn CURDATE()}))或isull(dbo.CustomerServiceDetails.ServiceEndDate,'2500-01- 01')

一周热门 更多>