我正在尝试生成一个唯一的varchar ID,它应包含4位字母和4位Numbers。它们可以是随机的,但ID应以字母开头,然后数字应该跟随。这是在SQL Server 2008 R2中。
例如:
ABCD1234 rtfd8798 tyry8745
有人可以帮忙吗?
答案 0 :(得分:2)
如果您要生成4个随机字母字符后跟4个随机数字,以下内容将完成。
它不漂亮或不灵活,但应足以引导您朝着正确的方向前进。
DECLARE @Data VARCHAR(8)
SET @Data = ''
-- Build first four characters
WHILE (LEN(@Data) < 4)
BEGIN
SET @Data = @Data + SUBSTRING('abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ', CAST(RAND() * 52 AS INT), 1)
END
-- Build next for numbers
WHILE (LEN(@Data) < 8)
BEGIN
SET @Data = @Data + SUBSTRING('0123456789', CAST(RAND() * 10 AS INT), 1)
END
PRINT @Data
答案 1 :(得分:0)
我认为唯一的解决方案是使用ID INT IDENTITY(1,1)
CREATE TABLE dbo.tblProducts
(ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
ProductID AS 'PUID' + RIGHT('0000' + CAST(ID AS VARCHAR(8)), 8) PERSISTED,
.... your other columns here....
)
然后,当您将新数据插入表值PUID0001
,PUID0002