插入数据时若该字段已经存在则为插入的值加个编号
插入数据时若该字段已经存在则为插入的值加个编号
如有个字段是地区,若数据库中已存在一个“重庆”,则以后插入“重庆”时,自动给该值编号后再插入数据库中 ,如:重庆1,重庆2,重庆2,重庆4,以此类推,按从小到大的顺序。
怎么实现呢?提供点思路或代码参考一下都行。谢谢了! 字符串,自动,编号,插入,数据库
[解决办法]
with T as
(select count(0) As NUM from tab where name like '重庆%')
insert into tab (name) values('重庆' + case T.NUM when 0 then '' else cast(T.NUm as varchar(10)) end)
declare @string varchar(500)set @string = '宁155ML2123232'declare @len intset @len = len(@string)declare @outstr varchar(500)set @outstr = ''declare @tempstr varchar(1)while (@len>0)begin set @tempstr = substring(@string,@len,1) if (@tempstr >= '0' and @tempstr <= '9') begin set @outstr = @tempstr + @outstr end else begin break end set @len = @len - 1endselect @outstr
declare @string varchar(500)
set @string = '宁155ML2123232'
declare @len int
set @len = len(@string)
declare @outstr varchar(500)
set @outstr = ''
declare @tempstr varchar(1)
while (@len>0)
begin
set @tempstr = substring(@string,@len,1)
if (@tempstr >= '0' and @tempstr <= '9')
begin
set @outstr = @tempstr + @outstr
end
else
begin
break
end
set @len = @len - 1endselect
@outstr
with T as
(select isnull(max(cast(replace(name,'重庆','') as int),0) As maxNo from tab where name like '重庆%')
insert into tab (name) values('重庆' + case T.maxNo when 0 then '' else cast((T.maxNo +1)as varchar(10)) end)
drop procedure MytestPro
go
create procedure MytestPro
@MyTestName varchar(30)
as
declare @SName varchar(30),@ID int,@NewName varchar(30)
set @SName = (select SName from MyTest where SName = @MyTestName)
if(@SName is null)
begin
--如果名称不存在则插入数据
insert into MyTest values(@MyTestName)
end
else
begin
--如果名称存在 获取最后一次名称记录
set @NewName = ( select top 1 SName FROM MyTest where SName LIKE '%A%' order by ID desc)
--截取名称后面的编号
set @ID = SUBSTRING(@NewName,2,len(@NewName))
print convert(varchar(20),(@ID))
set @NewName = @MyTestName+convert(varchar(20),(@ID+1))
insert into MyTest values(@NewName)
end
调用存储过程
execute MytestPro @MyTestName='A'
[解决办法]
你做一个存储过程,重庆作为存储过程的参数替换掉
c#调用这个存储过程,传实际城市名过去就行了