0

我真的在为 MSSQL 2012 中的 case 语句苦苦挣扎。我四处寻找其他答案,但虽然我得到了一些帮助,但似乎没有一个能解决问题。

case firstname
    when len(ltrim(rtrim(firstname))) > 11 then 'blah'
    else 'blahblah'
end as test

我在“>”字符上遇到语法错误。

原本,这是

case firstname
    when ltrim(rtrim(firstname)) like '% %' then 'blah'
    else 'blahblah'
end as test

但我认为like 关键字可能有些敏感,所以我将其更改为'>',但我得到了同样的结果。

可能是一个愚蠢的问题,但我已经敲了几个小时的头,非常感谢一些见解。

4

3 回答 3

2

试试这个版本:

(case when len(ltrim(rtrim(firstname))) > 11 then 'blah'
      else 'blahblah'
 end) as test

case声明有两个版本。带有变量的那个用于常量表达式:

(case firstname
      when 'Arnold' then . . .
      when 'Betty' then . . .
 end)

第二个版本(实际上是我使用的唯一一个)对每个部分都有一个条件:

(case when firstname = 'Arnold' then . . .
于 2013-08-28T12:47:55.617 回答
0

将其更改为

case 
    when len(ltrim(rtrim(firstname))) > 11 then 'blah'
    else 'blahblah'
end as test
于 2013-08-28T12:48:40.607 回答
0

你混淆了两种CASE表达方式

一个简单的 case 表达式检查每个子句是否与first 之后和之前的WHEN表达式相等。CASEWHEN

搜索的 case 表达式检查每个子句中单独的任意谓词,并且在和 firstWHEN之间没有表达式。CASEWHEN

尝试:

case
    when len(ltrim(rtrim(firstname))) > 11 then 'blah'
    else 'blahblah'
end as test
于 2013-08-28T12:49:07.443 回答