查询中的SQL CASE - 奇怪的行为

时间:2011-10-31 19:42:33

标签: sql sql-server sql-server-2008

在查询中使用Case语句似乎可以正常工作,只要您想要匹配的唯一案例是字符串。但是如果你想把“>”大于(日期或数字)等,SSMS会自动在您的语句(下方)周围添加撇号,就像它是一个字符串一样。

如何让它接受“大于号码”或“大于号码”等等?

SSMS Adds ' around operators used in a CASE Statement in a Query

3 个答案:

答案 0 :(得分:4)

CASE expression有两种类型:

  
      
  • 简单的CASE表达式将表达式与一组简单表达式进行比较,以确定结果。
  •   
  • 搜索到的CASE表达式计算一组布尔表达式以确定结果。
  •   

您需要已搜索 CASE表达式。这意味着WHEN应该在CASE关键字后立即

CASE WHEN SoldDate <= SubjectDate THEN ...

答案 1 :(得分:2)

有两种类型的CASE表达式(from msdn):

简单 CASE比较仅等同于

的指定表达式

SELECT FieldName CASE WHEN 'Blah' THEN 'Foo' ELSE 'Bah' END

搜索 CASE也可以做不等式,但语法更详细:

SELECT CASE WHEN FieldName >= 'Blah' THEN 'Foo' ELSE 'Bah' END

您正尝试使用简单语法,并且需要使用搜索语法,明确写出每个评估的字段名称和比较。

答案 2 :(得分:1)

您的CASE语句语法不正确。 WHEN应该在CASE

之后直接发送

:此:

CASE SoldDate WHEN ...

应该是这样:

CASE WHEN SoldDate <= SubjectDate THEN SoldFor ELSE EstSalePrice END

其他信息

有关CASE语法的其他示例,请查看the MSDN docs