如果你是要在建表中就转化的话可以用楼上的就可以了,如果你要是想要基于表中建的话可以这样
create table a(id int identity primary key not null,name varchar(30))
alter table a add code varchar(30)
update a set code=b.code from a,(select id,ltrim('bh'+replace(CONVERT(varchar(30),STR(id,5,0)),' ','0'))as code from a)as b where a.id=b.id
结果:
id name code
1 张三 bh00001
2 张三 bh00002
3 张三 bh00003
4 张三 bh00004
5 张三 bh00005
6 张三 bh00006
7 张三 bh00007
8 张三 bh00008
9 张三 bh00009
10 张三 bh00010
11 张三 bh00011
12 张三 bh00012
13 张三 bh00013
14 张三 bh00014
15 张三 bh00015
16 张三 bh00016
用计算列或用函数或触发器
如:
Create table test(ID int identity(1,1),Code as 'BH'+right(1000000+ID,5),Cid int)
1> CREATE TABLE test1 (
2> id int identity(1,1),
3> Code as 'BH' + RIGHT('0000' + CAST(id as varchar), 5),
4> value varchar(10)
5> );
6> GO
1>
2> INSERT INTO test1 VALUES ('Test');
3> GO
(1 行受影响)
1> select * from test1
2> go
id Code value
----------- ------------ ----------
1 BH00001 Test
(1 行受影响)
用计算列来处理.
这个效果可以么?