2012-06-11 33 views
0

但是我有一个case语句;我得到两个erros。我似乎无法找到修复错误的答案。sql case语句错误

SELECT #TMP.webid_Val = CASE #TMP.webid 
when 'NULL' then 'NOT COMPLIANT' 
else 'COMPLIANT' 
end 
FROM #TMP 

* * FROM附近的语法不正确。邻近期望交谈

的语法不正确= **

#TMP是临时表。 webid是要查看条件的值 webid_val是值将被更改的列。

任何帮助,将不胜感激。

+0

**为什么**你开始用'#'字符开始你的表名? – 2012-06-11 17:55:44

+0

你是什么意思“webid_val是谁的价值将被改变的列”?你想要执行更新吗? – Taryn

+0

是的,我是。我读过最好是使用案例陈述,然后是性能更新。 – MasterP

回答

1

(以下答案假设SQL Server)的
你不能做一个更新一个选择语句。

如果你想将数据返回给客户端应用程序或用户,使用

SELECT webid_Val = CASE 
    WHEN #TMP.webid IS NULL then 'NOT COMPLIANT' 
    ELSE 'COMPLIANT' 
END 
FROM #TMP 

,或者如果你想更新原来的临时表的数据,使用以下命令:

UPDATE #tmp SET 
webid_Val = CASE 
    WHEN #TMP.webid IS NULL then 'NOT COMPLIANT' 
    ELSE 'COMPLIANT' 
END 
FROM #TMP 
1

如果我正确理解你的笔记,你想要做一个更新语句,而不是选择语句。而且,null不是一个字符串。

下面将执行选择语句,如果这是你想要的。

select case #TMP.webid when null then 'NOT COMPLIANT' 
     else 'COMPLIANT' end 
from #TMP 

,如果你想在更新表的每一行:

update #TMP 
set webid_Val = (case webid when null then 'NOT COMPLIANT' 
      else 'COMPLIANT' end) 
3

它肯定看起来像你想要使用CASE声明你的方式来执行UPDATE不会UPDATE的数据表

UPDATE #TMP 
SET webid_Val = 
    (CASE when webid Is NULL 
     then 'NOT COMPLIANT' 
     else 'COMPLIANT' 
     end)