我的列ID
是自动增量,另一列是Request_Number
在Request_Number
我要插入类似"ISD0000"+ID
值的内容...
例如,对于第一条记录,它应该ID 1
和Request_Number“ISD000001
”
如何实现这一目标?
答案 0 :(得分:2)
您可以使用计算列:
create table T
(
ID int identity primary key check (ID < 1000000),
Request_Number as 'ISD'+right('000000'+cast(ID as varchar(10)), 6)
)
也许你还需要一个检查约束,这样你就不会溢出。
答案 1 :(得分:2)
如果您的表定义已经到位,则可以更改列并添加标记为持久的Computed列:
ALTER TABLE tablename drop column Request_Number;
ALTER TABLE tablename add Request_Number as 'ISD00000' + CAST(id AS VARCHAR(10)) PERSISTED ;
如果计算列未标记为持久化,则在创建列时不会创建它,实际上它仍在运行时计算。将列标记为持久化后,立即将其计算并存储在数据表中。
[编辑]:
ALTER TABLE tablename drop column Request_Number;
ALTER TABLE tablename add Request_Number as 'ISD'
+right('000000'+cast(ID as varchar(10)), 6) PERSISTED ;
答案 2 :(得分:1)
您可以使用Computed column:
CREATE TABLE T
( ID INT IDENTITY(1, 1) NOT NULL,
Request_Number AS 'ISD' + RIGHT('00000' + CAST(ID AS VARCHAR(10)), 6),
CONSTRAINT PK_T_ID PRIMARY KEY (ID)
);
<强> Example on SQL Fiddle 强>
答案 3 :(得分:0)
这应该有效
UPDATE dbo.TableName
SET Request_Number = 'ISD' + RIGHT('00000'+ CONVERT(VARCHAR(9),ID),6)
WHERE Request_Number IS NULL
假设您要更新此表,但可以轻松修改它以进行触发或插入。
答案 4 :(得分:0)
select 'ISD0000'+CONVERT(varchar, IDENT_CURRENT('Tablename'))