前言
做seo的很多人都想实现一个功能,那就是让页面里有一个版块是随机显示的数据,这样对搜索引擎来说,这个页面看似就是每天更新了,不仅是做seo的人有这样的需求,其实很多时候我们在开发网站的时候都有这样的需求,就是随机取出一些数据,那么这个功能到底应该怎么实现呢?
除了以上的情况,有的时候我们还需要在sql里用到随机数的功能,比如我今天就遇到了这个情况,需要每天为数据库里的某表的pv字段(浏览次数)不定的加一些数据,所以这里需要一个随机数的功能,然后在建立一个sql作业每天自动增加一些数据就可以了。我以前的做法是用程序写一段代码,然后建立了一个window计划,每天执行我的那段程序,现在想来,那个方法真是笨,每次还要连接数据库,现在用一个存储过程一个sql作业就全解决了。
一. 随机调取数据
很简单的一个函数 newsid() 只要用上这个函数就可以实现随机调取数据。
例如:我们的表名是 test 我现在要随机调出test表里前十条数据。
语句:select top 10 * from test order by newid()
只要这样我们就可以随机调取数据了。
二. 我们在说一下怎么样获得随机数
我们都知道在sql中随机函数是 rand()
但是我们直接用这个函数的话,比如: select rand() 这样会输出一堆小数。例如:0.13539811406527641, 这样的结果其实在我们应用中很少用到,可以说简单的编程中,其本没什么用。
那我们需要把这个得到的小数转化为整数,才可以使用,现在的情况是个数位没有数据,比如我们要生成一个两位数的数据,那我们就把现在的结果乘以100,例如:select rand()*100 这样的话,我们得到的结果小数点左边就会有两位数。例如:11.675518464017591我们得到这样的一个结果只需要在做一步就可以取出我们想要的结果了,只要把这个数字取整就可以了。
语句:select cast(rand()*100 as int)
只要用一个cast将类型转换我们就可以得到我们想要的数据了。
这个方法可以得到我们想要的数据,但是会有一个区域问题,如果要的数据完全锁点在某个数据之内,而不是模糊数据得话,这里需要你好好的做试验了,据说还要用到 floor 和 ceiling函数,结果有的时候会有一个数的差别,据体情况在据体研究吧,如果没有什么高要求的话,我以上的代码就完全够用了。
总结:
有的时候事情其实很简单,只是我们没有想到,其实有的时候我们做一件事情想到了一个思路就开始去做了,只是没有在去仔细的想想有没有其它的捷径,虽然捷径不一定好,但多想想还是好的。
本文作者:网友 来源:其它 |
CIO之家 www.ciozj.com 微信公众号:imciow