SQL如何填充字母数字列

SQL如何填充字母数字列,sql,sql-server,Sql,Sql Server,大家好,我正在寻找一种方法来完成一个具有字母数字唯一ID的列,比如添加最后一个max行的+1,例如图像 但我们说的是10万排左右 如何填写IDPEP列?差不多 INSERT INTO dbo.Table(IDPEP) SELECT 'IDP' + RIGHT('000000' + CAST(IDPEP + 1 AS VARCHAR(6)), 6) 但是我不知道怎么做,这个主表也是通过一些其他查询填充的。添加IDP+最后一个int值的触发器也是一个选项,但我不知道怎么做,我使用的是Sql

大家好,我正在寻找一种方法来完成一个具有字母数字唯一ID的列,比如添加最后一个max行的+1,例如图像

但我们说的是10万排左右 如何填写IDPEP列?差不多

 INSERT INTO dbo.Table(IDPEP)
 SELECT 'IDP' + RIGHT('000000' + CAST(IDPEP + 1 AS VARCHAR(6)), 6)

但是我不知道怎么做,这个主表也是通过一些其他查询填充的。添加IDP+最后一个int值的触发器也是一个选项,但我不知道怎么做,我使用的是Sql server 2012

您不想
插入
,您想
更新
。在SQL Server中,您可以执行以下操作:

with toupdate as (
      select t.*, row_number() over (order by (select null)) as seqnum
      from dbo.table t
     )
update toupdate
    set idpep = 'IDP' + RIGHT('000000' + CAST(seqnum + 1 AS VARCHAR(6)), 6);

对我来说,这里的解决方案的一部分是确保插入到表中的所有数据最终都是通过相同的通道完成的

我不确定这在您的环境中是否可行,但我可能实现这一点的方法是将所有数据插入到一个暂存表中,然后使用一个存储过程来添加新ID并将数据处理到目标表中。这是一种相当典型的数据仓库方法


可能有很多方法可以添加新ID,例如。,从目标表中获取最后一个ID,然后使用
行号
函数计算每条记录的增量。

为什么不将附加格式留给前端应用程序,只存储一个整数主键/标识列来处理唯一的数字?感谢您的回复Tanner此表的来源是从SSIS中,它来自需要清理和过滤的多个csv。没有应用程序填充此表!,ID列为identity,但它与IDPEP不匹配是否需要插入或更新?你有什么价值观?你的预期结果是什么?