我是SQL Server存储过程的新手。我想知道如何编写这个存储过程。场景是:
该过程将firstname和lastname作为参数,基于它取名字的第一个字母或名字和第一个字母,并在其末尾附加一个数字并返回该字符串。如果字符串已经存在于数据库中,它将递增数字并返回字符串。
示例1:
firstname: abc
lastname: def
output: ad001
示例2:
firstname: pqr
lastname: mno
output: pm001
示例3:
firstname: aaa
lastname: ddd
output: ad002
(在这种情况下,输出为ad002
而不是001
,因为值ad001
已存在于由示例1创建的数据库中。
对此问题的任何帮助将不胜感激。感谢。
答案 0 :(得分:1)
(的更新强>)
您可以在程序中使用此逻辑:
Declare
@firstname varchar(10)= 'aaa',
@lastname varchar(10)= 'ddd',
@output varchar(20)
insert into name_table
select
@firstname,
@lastname,
substring(@firstname,1,1)+
substring(@lastname,1,1)
+RIGHT('000'+cast(COALESCE(max(substring(output,3,4)),0)+1 as varchar) ,4)
from
name_table
where
output like substring(@firstname, 1, 1) + substring(@lastname, 1, 1) + '%'
select * from name_table