在sql server中,如何在不同条件下在case语句中插入multiple-else?
我真的很难在不同的条件下在case语句中插入else…我不确定是语法错误还是什么?它不起作用,我没有任何错误消息,问题是在某些情况下我的别名中仍然有Null在sql server中,如何在不同条件下在case语句中插入multiple-else?,sql,sql-server,sql-update,case,Sql,Sql Server,Sql Update,Case,我真的很难在不同的条件下在case语句中插入else…我不确定是语法错误还是什么?它不起作用,我没有任何错误消息,问题是在某些情况下我的别名中仍然有Null UPDATE Table SET Alias = SUBSTRING(Names, 10, 40); UPDATE Table SET Alias = CASE WHEN Alias LIKE 'core.user%' OR Alias LIKE 'core.idea%' OR Ali
UPDATE Table
SET Alias = SUBSTRING(Names, 10, 40);
UPDATE Table
SET Alias = CASE WHEN Alias LIKE 'core.user%' OR Alias LIKE 'core.idea%' OR Alias LIKE'core.form%'
THEN STUFF(Alias, CHARINDEX('.', Alias) + 5, 0, '-')
WHEN Alias LIKE 'core.badge%' OR Alias LIKE 'core.award%' OR Alias LIKE 'core.field%' OR Alias LIKE 'core.audit%' OR Alias LIKE 'core.event%'
THEN STUFF(Alias, CHARINDEX('.', Alias) + 6, 0, '-')
ELSE CASE len(Alias) when charindex('.',Alias) +4 then Alias
ELSE CASE len(Alias)when charindex('.',Alias)+ 5 then Alias
END
END
END;
/*the result for this part is:*/
Names Alias
idealink.core.userbadge core.user-badge
idealink.core.ideacategories core.idea-categories
idealink.core.awardtype core.award-type /*till here it's working,but when*/
idealink.core.user NULL ---I'd like to have (core.user)----
idealink.core.idea NULL ---I'd like to have (core.idea)----
idealink.core.award NULL ---I'd like to have (core.award)----
/*I think the problem is here, I'm having Null*/
所有这一切的目的都是为了摆脱idealink,当字符串在核心后面太长时,在单词之间加一个破折号;但在某些情况下,字符串不是很长,所以我不需要破折号(core.user、core.idea、core.award)等等,只要去掉idealink就可以了
我真的很感谢你们的帮助。
感谢原因是core.user和core.userbridge都属于您为别名定义的标准,如“core.user%” 要显式设置core.user、core.idea、core.award的值,请执行以下操作 检查/***************/
UPDATE Table
SET Alias = SUBSTRING(Names, 10, 40);
UPDATE Table
SET Alias = CASE /*****************************************************************************************/
WHEN Alias in('core.user','core.idea','core.award')
THEN Alias
/*****************************************************************************************/
WHEN Alias LIKE 'core.user%' OR Alias LIKE 'core.idea%' OR Alias LIKE'core.form%'
THEN STUFF(Alias, CHARINDEX('.', Alias) + 5, 0, '-')
WHEN Alias LIKE 'core.badge%' OR Alias LIKE 'core.award%' OR Alias LIKE 'core.field%' OR Alias LIKE 'core.audit%' OR Alias LIKE 'core.event%'
THEN STUFF(Alias, CHARINDEX('.', Alias) + 6, 0, '-')
ELSE CASE len(Alias) when charindex('.',Alias) +4 then Alias
ELSE CASE len(Alias) when charindex('.',Alias)+ 5 then Alias
END
END
END;
CASE
不能有多个ELSE
子句ELSE
用于当no解析为true时。哼,你知道我怎么解决这个问题吗?(我是新手)…:(这些不是多个ELSE
子句,@Larnu。它们是嵌套的。主案例的ELSE
是一个嵌入的案例
。(可以说很差)问题中的格式只是让它看起来在语法上是无效的。是的,OP更像是建议他们在一个案例中需要多个其他的,@EricBrandt.OMG,你完全正确@George Joseph,我明白了!非常感谢!!:)