应用程序将值插入SQL Server表时自动生成首字母

时间:2017-04-12 16:05:51

标签: sql sql-server

我正在寻找一种在应用程序将值插入SQL Server表时从first,last和MI列自动生成首字母的方法。我在考虑使用计算列,但我不确定这是否是这种情况下的最佳方法。该脚本必须查看现有的首字母列,并以某种方式使新值具有唯一性。也许通过在结尾处粘贴X(当X已经被使用时为XX,之后使用XXX等等),当值已经存在时。

非常感谢任何帮助。 TY

3 个答案:

答案 0 :(得分:0)

您可以将默认约束添加到现有initialDefault Left(FirstName,1) + Left(LastName,1)以实现此目的。

答案 1 :(得分:0)

由于您尚未提供任何详细信息,因此您必须弄清楚如何通过以下方式进行分区和排序:....

 select all_colmuns , case when  max( (Left(FirstName,1) + Left   (LastName,1))    
  over(PARTITION BY all_columns 
   ORDER BY id_primary_key ROWS BETWEEN   UNBOUNDED PRECEDING AND CURRENT ROW ) = 
          (Left(FirstName,1) + Left(LastName,1)) then 
       (Left(FirstName,1) + Left(LastName,1)) + 'X' 
    else (Left(FirstName,1) + Left(LastName,1)) end as intials 
   from your_table

答案 2 :(得分:0)

  select b.*, case when rn > 1 then intials_1 + replicate ('X' , rn-1)
  else intials_1 end as intials_final
  from     
       (  select a.all_columns ,
    row_number () over (partition by intials_1 order by intials_1) as rn
   from
   (select all_columns ,Left(FirstName,1) + Left(LastName,1) as    intials_1     
    from     your_tbl )a )b