Column_name>“”?

时间:2019-11-21 21:45:21

标签: sql ms-access

我今天遇到一个查询,在一个IIF语句中有一个比较column > " "。我以前从未见过这种情况,甚至不知道它在做什么。我熟悉将字符串与<和>进行比较。 IE“ B” <“ W”返回True。

但是将一列与一串空格进行比较到底能做什么呢?

select语句中的行:

,IIf([CD] > "     " AND [DT]=#12/31/9999#,[MT],[O]) AS [Final]

有人能确切解释这种比较是做什么的,为什么要这样?

1 个答案:

答案 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,则特别适用。