在SQL Server中生成包含4个alpha和4个数字的8位varchar

时间:2015-05-15 20:57:55

标签: sql-server

我正在尝试生成一个唯一的varchar ID,它应包含4位字母和4位Numbers。它们可以是随机的,但ID应以字母开头,然后数字应该跟随。这是在SQL Server 2008 R2中。

例如:

ABCD1234 rtfd8798 tyry8745

有人可以帮忙吗?

2 个答案:

答案 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....
  )

然后,当您将新数据插入表值PUID0001PUID0002