嵌套SQL case语句
我正在尝试恢复单位状态。我的案例陈述有什么错?我是SQL新手嵌套SQL case语句,sql,sql-server,case-statement,Sql,Sql Server,Case Statement,我正在尝试恢复单位状态。我的案例陈述有什么错?我是SQL新手 CASE WHEN [sStatus] LIKE '%Notice%' THEN 'Notice' ELSE CASE WHEN [sStatus] LIKE '%Occupied%' THEN 'Occupied' ELSE
CASE WHEN [sStatus] LIKE '%Notice%'
THEN 'Notice'
ELSE
CASE WHEN [sStatus] LIKE '%Occupied%'
THEN 'Occupied'
ELSE
CASE WHEN [sStatus] LIKE '%Vacant%'
THEN 'Vacant'
ELSE [sStatus]
END as [Status]
谢谢大家! 您得到错误是因为您有3个CASE语句,只有一个END 但是,根本不需要嵌套这些案例语句。您可以简单地执行以下操作:
CASE
WHEN [sStatus] LIKE '%Notice%'
THEN 'Notice'
WHEN [sStatus] LIKE '%Occupied%'
THEN 'Occupied'
WHEN [sStatus] LIKE '%Vacant%'
THEN 'Vacant'
ELSE [sStatus]
END as [Status]
您得到错误是因为您有3个CASE语句,只有一个END 但是,根本不需要嵌套这些案例语句。您可以简单地执行以下操作:
CASE
WHEN [sStatus] LIKE '%Notice%'
THEN 'Notice'
WHEN [sStatus] LIKE '%Occupied%'
THEN 'Occupied'
WHEN [sStatus] LIKE '%Vacant%'
THEN 'Vacant'
ELSE [sStatus]
END as [Status]
你的案件陈述没有结尾。但是,它们首先不需要嵌套:
(CASE WHEN [sStatus] LIKE '%Notice%' THEN 'Notice'
WHEN [sStatus] LIKE '%Occupied%' THEN 'Occupied'
WHEN [sStatus] LIKE '%Vacant%' THEN 'Vacant'
ELSE [sStatus]
END) as [Status]
而且,如果您只需要第一个单词,则根本不需要大小写
:
SUBSTRING(sStatus, CHARINDEX(' ', sStatus + ' '), LEN(sStatus))
你的案件陈述没有结尾。但是,它们首先不需要嵌套:
(CASE WHEN [sStatus] LIKE '%Notice%' THEN 'Notice'
WHEN [sStatus] LIKE '%Occupied%' THEN 'Occupied'
WHEN [sStatus] LIKE '%Vacant%' THEN 'Vacant'
ELSE [sStatus]
END) as [Status]
而且,如果您只需要第一个单词,则根本不需要大小写
:
SUBSTRING(sStatus, CHARINDEX(' ', sStatus + ' '), LEN(sStatus))
你不需要所有这些
你不需要所有这些错误是:关键字“as”附近的语法不正确。错误是:关键字“as”附近的语法不正确。我不知道我可以多次这样使用!非常感谢。使用子字符串会更有效吗?@Walker。它可能会稍微更有效率。我认为
substring()
比like
在开头使用通配符要快。我不知道我可以在多次这样的情况下使用!非常感谢。使用子字符串会更有效吗?@Walker。它可能会稍微更有效率。我认为substring()
比像那样在开头使用通配符要快。