sql 非数字增长列

来源:百度知道 编辑:UC知道 时间:2024/06/06 12:08:29
sqlserver
有一列规则如下
a_2
a_3
a_4
我怎样用最简单的方法insert这样数据,就是自增长列前面加个字符串,用row_number应该不行.

insert into [表]
values([字段])
select 'a_' + cast(max(cast(substring([字段], 3, 1) as int)) + 1 as varchar(20)) from [表]

--测试:

CREATE TABLE #t(x INT IDENTITY PRIMARY KEY,aa char(10))

insert into #t(aa)
SELECT 'a_'+ltrim(rtrim(str(@@IDENTITY)))

insert into #t(aa)
SELECT 'a_'+ltrim(rtrim(str(@@IDENTITY)))

insert into #t(aa)
SELECT 'a_'+ltrim(rtrim(str(@@IDENTITY)))

--注意,第一行的aa值为NULL

假设你的表tab有三列:id,aid,other。其中的id是标识列,aid是varchar类型的,那么insert语句可以这样写:

insert into tab(aid,other) select 'a_'+cast((isnull(max(id),0)+1) as varchar(10)),'你的其它内容' from tab