0

我需要将带有另一列(userID)的表更新为姓氏列。所以我写了这样的查询

update User set LastName = +'LastName_'+ CONVERT (varchar(10),UserID)

并给出这样的结果

UserID    FirstName             LastName  
1               AALIYAH             Bhatt_1
2               Mohan               Kumar_2
3               varun               ratna_3
4               suresh              rania_4
5               AARON               suresh_5    

etc ......

4500            Kalyan              raju_4500
4501            raohan              manish4501

以及如何获取序列中的姓氏.. 参见最后一列,例如 4500,因此姓氏更新为 raju_4500 并变为名字 userId(1),姓氏为 Bhatt_1

我怎么能按顺序排列

UserID    FirstName             LastName  
1               AALIYAH             Bhatt_0001
2               Mohan               Kumar_0002
3               varun               ratna_0003
4               suresh              rania_0004
5               AARON               suresh_0005 

etc ......

4500            Kalyan              raju_4500
4501            raohan              manish4501

建议我

4

4 回答 4

1

此表达式为您提供最大 UserID 的长度:

select len(max(userid)) from User

您可以将前导零放在这样的数字上:

select right('0000000000' + convert(varchar(10), /*number*/), /*length*/)

所以,把它们放在一起,我会这样做:

declare @length int = (select len(max(userid)) from User)
update User set LastName = 'LastName_' + 
    right('0000000000' + convert(varchar(10), UserID), @length)
于 2013-05-30T05:06:39.093 回答
0

这将给出确切的结果。

update User set LastName = LastName +'_'+RIGHT('000'+cast(UserID as varchar), 4)

SQL小提琴

于 2013-05-30T05:17:39.567 回答
0

试试这个

update User set LastName = +'LastName_'+  RIGHT('0000'+ CONVERT(varchar(10),UserID),4)
于 2013-05-30T05:21:28.103 回答
0

我认为这会奏效

update User set LastName = +'LastName_'+  RIGHT('0000'+ CONVERT(varchar(10),UserID),4) 
于 2013-05-30T05:12:26.973 回答