zoukankan      html  css  js  c++  java
  • (转)SQL Server当中生成一定范围的随机数

    在SQL server中,有个随机函数rand(),有不少新手可能不知道存在这个函数,现在我就把这个函数的一些随机数生成技巧写出来,这是面向菜鸟的,老鸟请不要拍砖呀,我的头还不够硬,不过还是希望老鸟们多多指教了,现在切入正题:

    随机函数:rand()
    在查询分析器中执行:select rand(),可以看到结果会是类似于这样的随机小数:0.36361513486289558,像这样的小数在实际应用中用得不多,一般要取随机数都会取随机整数。那就看下面的两种随机取整数的方法:

    1、
    A:
    select  floor(rand()*N)  ---生成的数是这样的:12.0

    B:
    select cast( floor(rand()*N) as int)  ---生成的数是这样的:12


    2、
    A:select ceiling(rand() * N)  ---生成的数是这样的:12.0

    B:select cast(ceiling(rand() * N) as int)  ---生成的数是这样的:12

        其中里面的N是一个你指定的整数,如100,可以看出,两种方法的A方法是带有.0这个的小数的,而B方法就是真正的整数了。
        大致一看,这两种方法没什么区别,真的没区别?其实是有一点的,那就是他们的生成随机数的范围:
    方法1的数字范围:0至N-1之间,如cast( floor(rand()*100) as int)就会生成0至99之间任一整数
    方法2的数字范围:1至N之间,如cast(ceiling(rand() * 100) as int)就会生成1至100之间任一整数
    对于这个区别,看SQL的联机帮助就知了:
    ------------------------------------------------------------------------------------

    比较 CEILING 和 FLOOR

    CEILING 函数返回大于或等于所给数字表达式的最小整数。FLOOR 函数返回小于或等于所给数字表达式的最大整数。例如,对于数字表达式 12.9273,CEILING 将返回 13,FLOOR 将返回 12。FLOOR 和 CEILING 返回值的数据类型都与输入的数字表达式的数据类型相同。
    ----------------------------------------------------------------------------------
    现在,各位就可以根据自己需要使用这两种方法来取得随机数了^_^

    另外,还要提示一下各位菜鸟,关于随机取得表中任意N条记录的方法,很简单,就用newid():
    select top N *  from table_name order by newid() ----N是一个你指定的整数,表是取得记录的条数

    OK,这篇文章就写到这里

  • 相关阅读:
    PATA 1071 Speech Patterns.
    PATA 1027 Colors In Mars
    PATB 1038. 统计同成绩学生(20)
    1036. 跟奥巴马一起编程(15)
    PATA 1036. Boys vs Girls (25)
    PATA 1006. Sign In and Sign Out (25)
    读取web工程目录之外的图片并显示
    DOS命令
    java连接oracle集群
    servlet
  • 原文地址:https://www.cnblogs.com/symbol441/p/977859.html
Copyright © 2011-2022 走看看