随机生成唯一的五位数

屌絲來襲 2012-08-15 12:47:15
我想建一个表,然后主键是随机生成的一个唯一的5位数,0不能做首位,应该怎么做啊
...全文
798 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶子 2012-08-15
  • 打赏
  • 举报
回复
建议用identity或是guid 类型。

随机五位数,还得保证不重复,完全没有必要。
gogodiy 2012-08-15
  • 打赏
  • 举报
回复

CREATE TABLE t1
(
id INT DEFAULT LEFT(REPLACE(ABS(CHECKSUM(NEWID())),0,''),5),
name VARCHAR(20),
sex VARCHAR(2)
)
INSERT INTO t1 (name,sex)
SELECT '张三','男' UNION ALL
SELECT '李四','男' UNION ALL
SELECT '马娘娘','女'

SELECT * FROM t1

---------------------------
id name sex
21168 张三 男
14723 李四 男
26245 马娘娘 女
gogodiy 2012-08-15
  • 打赏
  • 举报
回复

SELECT LEFT(REPLACE(ABS(CHECKSUM(NEWID())),0,''),5)
天-笑 2012-08-15
  • 打赏
  • 举报
回复
建议楼主还是不要用随机数做主键了。
与其这样,还不如用一个自增主键 或者用uniqueidentifier
shoppo0505 2012-08-15
  • 打赏
  • 举报
回复
主键随机生成的5位数? 那要是已存在表中,那咋办? 没听说过这么弄的.
只听说过随机生成的uniqueidentifier 作为主键的,其他类型没听说过.
ORAClE SE 2012-08-15
  • 打赏
  • 举报
回复
楼主,随机生成的五位数作主键是不科学的啊!因为会有重复,还不如用序列,或者用伪列,完全满足楼主。
duoxu1983 2012-08-15
  • 打赏
  • 举报
回复

with t as (
select 11110 as id union
select 11121 )
select top 1 id from (
select top 99999
row_number()over(order by a.name) as id
from master..spt_values a ,master..spt_values b) t
where id>10000
and id not in (select id from t)
order by newid()
屌絲來襲 2012-08-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

SQL code

CREATE TABLE t1
(
id INT DEFAULT LEFT(REPLACE(ABS(CHECKSUM(NEWID())),0,''),5),
name VARCHAR(20),
sex VARCHAR(2)
)
INSERT INTO t1 (name,sex)
SELECT '张三','男' UNION ALL
SELECT '李四……
[/Quote]

这样是不是5位数里每一位都不会出现0了啊。。。我只是想首位排除0

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧