SQL Server存储过程,用于根据firstname和lastname生成代码

时间:2013-05-03 04:59:07

标签: sql-server sql-server-2008 sql-server-2005 stored-procedures procedures

我是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创建的数据库中。

对此问题的任何帮助将不胜感激。感谢。

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

SQL Fiddle