Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在SQL Server中生成包含4个字母和4个数字的8位varchar_Sql Server - Fatal编程技术网

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

Sql 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

我试图生成一个唯一的varchar ID,它应该包含4位字母和4位数字。它们可以是随机的,但ID应该以字母开头,然后是数字。这是在SQLServer2008R2中

例如:

ABCD1234 rtfd8798 tyry8745


有人能帮忙吗

如果您希望精确地生成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....
  )