增加char字段

时间:2013-05-28 15:47:40

标签: sql tsql sql-server-2005

我有一个格式为

的表格
Muser  char(27), null
privilege char(15), null
Flags (smallint, null)

MUSER Privilege Flags
1     ALL       0
1     ASSIGNEE  0
1     ALL       0
etc

我希望将值列MUSER增加值1 目前,MUSER中的每条记录的值都为1

更新后,MUSER应该读取

1
2
3
etc

我怎么能这样做,因为我无法理解它 - 如果可能的话,会欣赏tsql。

2 个答案:

答案 0 :(得分:0)

这是一种方法,使用CTE和row_number()函数:

with toupdate (
      select t.*,
             row_number() over (order by (select NULL)) as seqnum
      from t
     )
update toupdate
    set Muser = cast(seqnum as varchar(255));

您没有指定订购。 order by (select NULL)选择任意顺序。

而且,为什么要在字符字段中存储整数?你的数据结构似乎有些不妥。

答案 1 :(得分:0)

您也可以尝试这种方式:

<强> Fiddle example here

declare @id char(27) 
update mytable set @id = muser = convert(int,isnull(@id,'0')) + 1 


--Results
| MUSER                       | PRIVILEGE       | FLAGS |
---------------------------------------------------------
| 1                           | ALL             |     0 |
| 2                           | ASSIGNEE        |     0 |
| 3                           | ALL             |     0 |