我今天遇到一个查询,在一个IIF
语句中有一个比较column > " "
。我以前从未见过这种情况,甚至不知道它在做什么。我熟悉将字符串与<和>进行比较。 IE“ B” <“ W”返回True。
但是将一列与一串空格进行比较到底能做什么呢?
select语句中的行:
,IIf([CD] > " " AND [DT]=#12/31/9999#,[MT],[O]) AS [Final]
有人能确切解释这种比较是做什么的,为什么要这样?
答案 0 :(得分:1)
您的逻辑正在检查CD
是否大于其名称仅包含空格的字段。似乎极不可能。
我的猜测是您正在使用MS Access,因为日期常量与SQL Server不兼容。在SQL Server中,它将是:
IIf([CD] > ' ' AND [DT] = #12/31/9999#, [MT], [O]) AS [Final]
这可验证字符串不是以一串空格开头。实际上,这是一种相当可悲的方式。通常会涉及LTRIM()
。
我可能会进一步推测CD
正好是五个字符。在这种情况下,逻辑将检查它是否不是所有空格。如果类型为CHAR(5) NOT NULL
,则特别适用。