C# 存储过程中的if语句
我正在努力找出解决这个问题的最佳方法 我有一个用于大学教学活动的数据库表,该大学有几个正在教学的校区。我试图根据下拉列表显示每个校区的gridview。我必须根据房间更新活动表field CampusOccessed。房间为EMG12、OG114、DS15 如果房间开始于:- 电子校园C# 存储过程中的if语句,c#,sql,C#,Sql,我正在努力找出解决这个问题的最佳方法 我有一个用于大学教学活动的数据库表,该大学有几个正在教学的校区。我试图根据下拉列表显示每个校区的gridview。我必须根据房间更新活动表field CampusOccessed。房间为EMG12、OG114、DS15 如果房间开始于:- 电子校园 奥登校区 D-Donen校区 My idea at the moment is:- For each row in Activites If Room MyString.ToCharArray()[0] =
奥登校区
D-Donen校区
My idea at the moment is:-
For each row in Activites
If Room MyString.ToCharArray()[0] = E
Then Update CampusOccurred = Earn
Else If Room MyString.ToCharArray()[0] = O
Then Update CampusOccurred = Odean
我可以自己显示下拉列表和gridview来完成剩下的工作,但我不确定进行上述工作的最佳方式。是否可以在SQL中执行If语句?您可以编写一个SQL查询,执行以下操作:
select . . .,
(case when left(Room, 1) = 'E' then 'Earn Campus'
when left(Room, 1) = 'O' then 'Oden Campus'
when left(Room, 1) = 'D' then 'Donen Compus'
end) as Campus
如果您通过这种方式从数据库中获取数据,那么工作就完成了
注意:大多数但并非所有数据库都支持
left()
。所有这些都支持等效的函数。如果我正确理解您的请求,您希望在更新中使用case
语句:
update Activities
set CampusOccured = case left(Room,1)
when 'E' then 'Earn'
when 'O' then 'Oden'
when 'D' then 'Donen'
end
这与提出的问题有什么关系?我假设您希望在一个存储过程中执行此操作,该存储过程基于您正在使用的dbms的问题titleTag。只有少数dbms产品具有符合ANSI SQL的存储过程。这不是一个特别好的主意。如果他们添加另一个名为“在线校园”的校园,会发生什么?数据模型不好。你应该有一个房间表和一个校园表,一个房间记录将链接到一个校园记录,而不是应用“第一个字符的秘密”。这正是我试图做的,我现在将尝试一下。非常感谢:)@Alexandria很乐意帮忙。请将问题标记为已回答,如果它对您有效。当我尝试运行它时,它会给我一个错误。这就是我所做的。创建过程[dbo]。[CampusOccurrent]作为开始更新活动集Activities.CampusOccurrent=(案例左(房间,1)当'E'时,然后'Earn'当'O'时,然后'Oden'当'D'时,然后'Donen')ENDJust不会运行,就像结尾缺少了什么一样。@Alexandria它缺少
end
对于case
。尝试以下操作:CREATE PROCEDURE[dbo].[campusoccurrent]AS BEGIN update Activities set Activities.campusoccurrent=(案例左(1)当'E'时,然后'Earn'当'O'时,然后'Oden'当'D'时,然后'Donen'结束)结束
对不起,我不明白这是怎么回事。我是否在此之后执行update语句。@Alexandria。如果您只需要网格视图中的数据,则select
就足够了。您不需要实际修改数据。