将自动生成的值插入具有特定模式的列中

时间:2016-12-10 05:09:36

标签: sql sql-server

我有一个名为tblSample的表,其中包含ID列,PID等。我想自动生成具有特定模式的这两列。

例如:

  ID       PID
  ------   ------
  ABC001   PAB001
  ABC002   PAB002
  ABC003   PAB003
  ABC004   PAB004
    |        | 
    |        |
  ABC999   PAB999

如您所见,ID中的{ABC'模式和PID中的'PAB'模式相同。如何自动将这些记录插入表中,“ABC”或“PAB”之后的这三个数字之间的范围是001-999?

2 个答案:

答案 0 :(得分:3)

我的建议是创建如下所示的表结构,其中一个标识列为testID,另一个使用该列ID和PID计算:

CREATE TABLE #tmpOne(testID INT IDENTITY (1,1), 
    ID AS ('ABC'+ (CASE WHEN len(testID) <=3 THEN CAST(RIGHT(0.001*testID, 3) AS VARCHAR) ELSE CAST(testID AS VARCHAR) END)), 
    Ename VARCHAR(20))

INSERT INTO #tmpOne(Ename)
SELECT 'Test'

SELECT * FROM #tmpOne

答案 1 :(得分:1)

    CREATE TABLE #tt(ID VARCHAR(100),PID VARCHAR(100))
    GO
    INSERT INTO #tt(ID,PID)
    SELECT 'ABC'+RIGHT('000'+LTRIM(a.ID),3),'PAB'+RIGHT('000'+LTRIM(a.ID),3) FROM (
         SELECT ISNULL(MAX(CASE WHEN SUBSTRING(t.id,4,LEN(ID))> SUBSTRING(t.id,4,LEN(PID)) THEN SUBSTRING(t.id,4,LEN(ID)) ELSE SUBSTRING(t.id,4,LEN(PID)) END )+1,1) AS id
         FROM #tt AS t 
      )  AS a
    GO 999