在同一行中交换数据

时间:2013-02-18 19:27:56

标签: sql-server-2008

我有一张学生桌,上面有以下字段:

sid     sname    gender
 1       xyz       m
 2       abc       f
 3        wxy      m
 4       jkl       f

我希望将性别列中的数据作为男性对女性,女性对应男性。

我尝试使用存储过程:

CREATE PROCEDURE [dbo].[replacesex]
AS
BEGIN
SET NOCOUNT ON;
declare @sex char(10)
select @sex=sex
from dbo.student
if(@sex='f')
update dbo.student
set sex='m'
    else
    update dbo.student
set sex='f'
END

3 个答案:

答案 0 :(得分:1)

试试这个:

UPDATE Student
SET gender = CASE gender WHEN 'm' THEN 'f'
                         WHEN 'f' THEN 'm'
             END

答案 1 :(得分:0)

一种方法是CASE声明

UPDATE Student
set gender =case gender when'm' then 'f'
when 'f' then 'm' end

答案 2 :(得分:0)

较短的版本将是:

UPDATE Student
    SET gender = CASE gender WHEN 'm' THEN 'f' ELSE 'm' END