Sql server 在SQL Server中生成包含4个字母和4个数字的8位varchar
我试图生成一个唯一的varchar ID,它应该包含4位字母和4位数字。它们可以是随机的,但ID应该以字母开头,然后是数字。这是在SQLServer2008R2中 例如: ABCD1234 rtfd8798 tyry8745Sql server 在SQL Server中生成包含4个字母和4个数字的8位varchar,sql-server,Sql Server,我试图生成一个唯一的varchar ID,它应该包含4位字母和4位数字。它们可以是随机的,但ID应该以字母开头,然后是数字。这是在SQLServer2008R2中 例如: ABCD1234 rtfd8798 tyry8745 有人能帮忙吗 如果您希望精确地生成4个随机字母字符和4个随机数字,下面的步骤可以完成 它既不漂亮也不灵活,但应该足以引导你走向正确的方向 DECLARE @Data VARCHAR(8) SET @Data = '' -- Build first four chara
有人能帮忙吗 如果您希望精确地生成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
DECLARE@Data VARCHAR(8)
设置@Data=''
--构建前四个角色
而(LEN(@Data)<4)
开始
SET@Data=@Data+子字符串('abcdefghijkmnopqrstuvxyzabcdefghijklmnpqrstuvwxyz',强制转换(RAND()*52为INT),1)
结束
--为数字构建下一个
而(LEN(@Data)<8)
开始
SET@Data=@Data+子字符串('0123456789',强制转换(RAND()*10为INT),1)
结束
打印@数据
我认为唯一的解决方案是使用ID INT-IDENTITY(1,1)
然后,当您将新数据插入表值时,例如PUID0001
,PUID0002
为什么不使用newid()?
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....
)