自动生成Varchar变量

时间:2017-01-05 04:30:49

标签: sql sql-server sql-server-2008

如何在没有特定限制的情况下自动生成数据类型VARCHAR的变量,这意味着它必须类似于'AB1''AB2''AB3' ......到无穷大

这里主要有两点:

  1. 此表中没有标识列

  2. 有时候,此列中可能还有其他模式数据,例如'AB1','AB2','AB3','PK1','AB4' Which is (AB(3+1))

1 个答案:

答案 0 :(得分:1)

希望它对你有所帮助。

CREATE TABLE #tt(s VARCHAR(100),col1 INT )
INSERT INTO #tt
VALUES('AB1',1),('AB2',100),('AB3',2),('PK1',5),('AB4',20)
GO

DECLARE @prefix VARCHAR(100)='PK'
INSERT INTO #tt(s,col1)
SELECT @prefix+LTRIM(ISNULL(MAX(CASE WHEN ISNUMERIC(v.num)=1 THEN CONVERT(INT,v.num) ELSE 0 END),0)+1),20
FROM #tt 
CROSS APPLY(VALUES(SUBSTRING(s,LEN(@prefix)+1,LEN(s)))) v(num)
WHERE LEFT(s,LEN(@prefix))=@prefix
GO 10

SELECT * FROM #tt
s
-----
AB1
AB2
AB3
PK1
AB4
PK2
PK3
PK4
PK5
PK6
PK7
PK8
PK9
PK10
PK11
PK12
PK13
PK14
PK15
PK16
PK17
PK18
PK19
PK20
PK21