我今天遇到了一个查询,在一个IIF
语句中,有一个比较column > " "
。我以前从未见过这种情况,我甚至不知道它在做什么。我熟悉将字符串与<和>进行比较。IE "B“< "W”返回True。
然而,将列与空格字符串进行比较到底是做什么的呢?
select语句中的行:
,IIf([CD] > " " AND [DT]=#12/31/9999#,[MT],[O]) AS [Final]
有人能确切地解释一下这个比较是做什么的吗?你为什么要这样做?
发布于 2019-11-21 13:50:00
您的逻辑是检查CD
是否大于仅由空格组成的字段。这似乎是极不可能的。
我的猜测是,您要么使用MS,因为日期常量与Server不兼容。在Server中,这将是:
IIf([CD] > ' ' AND [DT] = #12/31/9999#, [MT], [O]) AS [Final]
这验证了字符串没有以一串空格开始。实际上,这是一种相当可悲的做法;更典型的情况是,涉及到LTRIM()
。
我可能进一步推测,CD
正好有五个字符长。在这种情况下,逻辑是检查它不是所有的空格。如果类型为CHAR(5) NOT NULL
,这将特别适用。
https://stackoverflow.com/questions/58984244
复制相似问题