首页 新闻 会员 周边 捐助

随机排列姓名

0
悬赏园豆:100 [已解决问题] 解决于 2009-12-22 09:16

表t_person中有一列为Name,要求是将里面的名字随机组合

如原为 张三 李四 王五

现在通过使用存储过程将其修改为 张五 李三 王四(是随机产生的,如姓张的可以为组合为张三、张四、张五),但是姓不要改变

验证OK后再加100分

千羽拓海的主页 千羽拓海 | 初学一级 | 园豆:0
提问于:2009-12-21 16:35
< >
分享
最佳答案
0

declare @t table(name varchar(20))


insert @t
select '张三'
union all
select '李四'
union all
select '王五'



select left(name,1)+(select top 1 right(name,len(name)-1) from @t where left(name,1)<=left(a.name,1) or left(name,1)>left(a.name,1) order by newid()) from @t a

收获园豆:100
清海扬波 | 小虾三级 |园豆:825 | 2009-12-21 19:35
爱死你
千羽拓海 | 园豆:0 (初学一级) | 2009-12-22 09:15
其他回答(2)
0

必须要用SQL语句吗?

增加一字段,orderno,int型,

先计算一下记录条数count,再1-count之间,对每条记录的orderno进行赋值~

高天蒲 | 园豆:35 (初学一级) | 2009-12-21 16:50
0

给一个思路,先取得一个随机数(select @top= convert(int,(RAND()*count(*)))+1 from t_person),再从t_person表里取得一个随机多的一些记录(select top(@top) * from t_person ),取记录id为最大值的那个name字段值 ,再把name字段值取左边一个字符(left(name,1)),更新到取到的记录的name字段取右边的几个字符(right(name,len(name)-1)) ,这样的结果就是随机组合的字串了。

阿松 | 园豆:601 (小虾三级) | 2009-12-21 18:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册