例如我有一个名为'ID'的列 我想把输出作为
ID
---
ABCXX708
ABCXX976
ABCXX654
ABCXX081
简而言之,ABCXX对于每一行应该是通用的,但其余3个数字应该是随机的和整数..
答案 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