且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在update语句的where子句中使用case子句

更新时间:2023-01-19 21:50:50

尝试这样的事情:



Try something like this:

IF NOT EXIST (SELECT listid FROM list WHERE @languagecode='en' AND ListName_en =@listname AND ListType=@ListType AND AccessType=@AccessType AND (CreatedBy = @EmplpyeeID OR @CreatedBy = '0' OR @AccessType = 'Global'))
 
BEGIN
 
--some other statement

END





你不需要在这种情况下使用案例陈述。您有多个正在检查的值,并且case语句将为每个case语句提供一个结果,因此不适合您的查询。



[更新]



试试这个,它会得到一些你可以在查询运行之前查看的值。





You do not need to use a case statement in this situation. You have multiple values you are checking against and a case statement will give you one result for each case statement so is not appropriate for your query.

[UPDATE]

Try this, it will get some values you can check before the query runs.

DECLARE @listNameChoice varchar(25)

SET @listNameChoice = (Case WHEN @languagecode = 'en' THEN 'ListName_en' ELSE 'ListName_DE' END)

IF NOT EXIST (SELECT listid FROM list WHERE @listNameChoice = @listname AND ListType=@ListType AND AccessType=@AccessType AND (CreatedBy = @EmplpyeeID OR @CreatedBy = '0' OR @AccessType = 'Global'))
 
BEGIN
 
--some other statement

END


IF not exist (select listid from list where  
case @languagecode when 'en' then ListName_en
case @languagecode  when 'DE' then ListName_DE End =@listname and ListType=@ListType and AccessType=@AccessType AND (CreatedBy = @EmplpyeeID OR @CreatedBy = '0' OR @AccessType = 'Global'))
 
BEGIN
 
--some other statement

END

>