如何在sql server中自动生成带随机数的ID

时间:2016-12-06 05:58:11

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

例如我有一个名为'ID'的列 我想把输出作为

ID
---
ABCXX708
ABCXX976
ABCXX654
ABCXX081

简而言之,ABCXX对于每一行应该是通用的,但其余3个数字应该是随机的和整数..

4 个答案:

答案 0 :(得分:2)

with t (n) as (select 0 union all select n+1 from t where n <100)

select    'ABC' 
        + format(n,'00') 
        + cast(cast(rand(cast(newid() as varbinary(100)))*10 as int) as char(1))

from    t

替代解决方案

with t (n) as (select 0 union all select n+1 from t where n <100)

select    'ABC' 
        + right ('0' + cast(n as varchar(2)),2)
        + cast(cast(rand(cast(newid() as varbinary(100)))*10 as int) as char(1))

from    t

答案 1 :(得分:0)

使用RAND()功能,您可以获得随机数。对于'ABCXX',你可以按照你以前的逻辑。

SELECT CAST(RAND()*10.00 AS INT)

每次点击Statement时,上面的RAND()函数都会给出小数点在0.0到1.0之间的值。使其成为单个数字乘以10并将其转换为INT以删除下一个十进制值。

参考“MSDN

答案 2 :(得分:0)

自SQL Server 2012起,您拥有FORMAT函数和SEQUENCE对象。因此,以下查询将起作用。

首先,您需要创建一个Sequence对象。

CREATE SEQUENCE DemopSeq
    START WITH 1
    INCREMENT BY 1;

然后,以下查询将根据您的要求生成结果。

SELECT CONCAT('ABC',FORMAT(NEXT VALUE FOR DemopSeq, '00'),ABS(Checksum(NewID()) % 10))

希望这有帮助。

答案 3 :(得分:0)

你可以这样写

j