将列从nvarchar更改为int并转换数据

时间:2014-04-02 18:45:29

标签: sql tsql

我有一个Users表,用于以nvarchar(6)格式保存用户性别的数据。我将软件更改为使用枚举来指示性别,因此希望将数据保存为int。

0 =男性,1 =女性。

我将每个用户名和旧的nvarchar性别放在一个单独的表中,并将原始Users表中的gender列转换为int列。如何设置我的查询以获取临时表中的所有用户并将其按用户名匹配到Users表中的用户,然后根据旧值是“女性”还是“男性”设置性别= 0或1 “?

用户
id int PK
用户名 nvarchar (50)
性别 int

不是Temptable
id int PK(Clusted Index与用户的PK无关)
用户名 nvarchar (50)
性别 nvarchar (6)

我希望将tempTable中的username用户与Users表中Username的用户进行匹配,并将Users.Gender值更新为0或1在tempTable.gender是男性还是女性。

1 个答案:

答案 0 :(得分:0)

这样的事情应该有效:

update a set gender = case b.Gender
                                when 'Male' then 0
                                when 'Female' then 1
                          end
from users a inner join
    tempTable b on b.Username = a.Username

这假设每个人都有一个老年人。价值是男性或女性,并不会导致数据不良/缺失。