首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL大小写选择语句错误

SQL大小写选择语句错误
EN

Stack Overflow用户
提问于 2014-07-29 16:49:08
回答 3查看 57关注 0票数 0

对于SQL编程来说相当新。

我正在尝试创建一个存储过程,它将使用用户名,将其与用户表进行比较,以检索他们的“角色”,然后从反馈表中选择与他们相关的所有反馈。

目前有三个可能的值:-用户-治理委员会-管理

如果该角色是“治理委员会”或“管理”,则希望检索表中的所有条目,但是如果该角色是“用户”,则只希望将发布列设置为true的条目,或者将“作者”或“IdentifiedBy”列设置为自己。

这是我目前所拥有的,但是它在case语句周围抛出错误。

代码语言:javascript
复制
@Alias varchar(max),
AS

DECLARE @Role varchar(max)

SET @Role =
(
    SELECT [Role] FROM [CSLL].[Users] WHERE [Alias] = @Alias
)

CASE
    WHEN @Role = "Admin" THEN SELECT * FROM [CSLL].[Feedback]
    WHEN @Role = "Governance Board" THEN SELECT * FROM [CSLL].[Feedback]
    WHEN @Role = "User" THEN SELECT * FROM [CSLL].[Feedback] WHERE [Publish] = True OR [Author] = @Alias or [IdentifiedBy]=@Alias
    ELSE
END

任何帮助都将不胜感激。我确信这只是我正在做的事情,这是愚蠢的,但由于对SQL不熟悉,我找不到它。

提前感谢

汤姆

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-29 19:34:37

您可以将此查询编写为单个select

代码语言:javascript
复制
select f.*
from Feedback f cross join
     (SELECT [Role] FROM [CSLL].[Users] WHERE [Alias] = @Alias) r
where (r.[role] in ('Admin', 'Governance Board') ) or
      (r.[role] = 'User' and ([Publish] = True OR [Author] = @Alias or [IdentifiedBy] = @Alias))

我认为将逻辑保持在一个地方,并进行一个查询,从不理解逻辑和维护代码的角度来看更好。

票数 0
EN

Stack Overflow用户

发布于 2014-07-29 16:53:53

您不能用这种方式来控制流。你得用如果。

代码语言:javascript
复制
IF @Role='Admin'
  SELECT * FROM [CSLL].[Feedback]
ELSE IF @Role='Governance Board'
  SELECT * FROM [CSLL].[Feedback]
ELSE IF ... etc
票数 1
EN

Stack Overflow用户

发布于 2014-07-29 16:56:37

Case语句必须位于select的内部。你可以用if代替。

代码语言:javascript
复制
if(@Role = "Admin")
then
    select * from CSLL.Feedback;
else if(...)

或者,您可以将该情况放在where子句中:

代码语言:javascript
复制
select *
from CSLL.Feedback
where
CASE
WHEN @Role = "Admin" THEN [IdentifiedBy]
WHEN @Role = "Governance Board" THEN [IdentifiedBy]
WHEN @Role = "User" THEN @Alias
END
IN (IdentifiedBy, Author)
OR [Publish] = True
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25020746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档