如何 产生 最短 随机数 postgresql生成随机数

网站导航:
您现在的位置: >
> 浏览信息
SQLSever:如何在select中的每一行产生不同的随机数?
时间: 10:45
来源: 作者:学盟网
select 的随机函数有点假, 也许是因为它是基于时间来的吧, 同一select中由于时间无法错开导致产生的随机数都是一样的, 如何做到让不同的行拥有不同的随机数呢? 本文来自学盟网()
下面以产生某个月的随机日期来示例吧。
--创建最小为1 最大为31 的视图
if object_id('view_rand_int31') is not null
drop view view_rand_int31
create view view_rand_int31
select cast(ceiling(rand() * 31) as int) as [r]
--创建日期(天)的随机函数
if object_id('dbo.Fun_GetRandDay') is not null
drop function dbo.Fun_GetRandDay
CREATE FUNCTION dbo.Fun_GetRandDay
returns int
declare @r int
select @r = [r] from view_rand_int31
while @r&@max
select @r = [r] from view_rand_int31
--试验select条件下实现多条记录同时取随机数
--插入试验数据行
declare @t table(rowNum int identity, [yearMonth] nvarchar(20))
declare @i int,@imax int
select @i=1,@imax =28
insert into @t ([yearMonth]) select '2014年2月'
--执行查询
cast( '2014-02-' + cast( dbo.Fun_GetRandDay(28) as varchar(2)) as datetime) as [date],
(select cast(ceiling(rand() * 28) as int)) as [r]
from @t 学盟网
本文标题:
本文地址:
免责声明:本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。Go语言生成随机数的方法
本文实例讲述了Go语言生成随机数的方法。分享给大家供大家参考。具体实现方法如下:
golang生成随机数可以使用math/rand包
代码如下:package main
&&& "math/rand"
func main() {
&&& for i:=0; i&10; i++ {
&&&&&&& fmt.Println(rand.Intn(100))
发现这种情况,每次执行的结果一样,不满意
代码如下:package main
&&& "time"
&&& "math/rand"
func main() {
&&& r := rand.New(rand.NewSource(time.Now().UnixNano()))
&&& for i:=0; i&10; i++ {
&&&&&&& fmt.Println(r.Intn(100))
这种方式就可以使用时间种子来获取不同的结果了
希望本文所述对大家的Go语言程序设计有所帮助。
顶一下(0) 踩一下(0)
热门标签:SQL中随机数函数rand()简介
下文将为您介绍SQL中的随机 函数 rand(),供您参考,如果您是才接触SQL Server的新手,不妨一看,相信对您学习SQL中的 函数 会大有帮助。 在SQL Server中,有个随机 函数 rand(),有不少新手可能不知道存在这个 函数 ,现在我就把这个 函数 的一些 随机数 生
下文将为您介绍SQL中的随机函数rand(),供您参考,如果您是才接触SQL Server的新手,不妨一看,相信对您学习SQL中的函数会大有帮助。
在SQL Server中,有个随机函数rand(),有不少新手可能不知道存在这个函数,现在我就把这个函数的一些随机数生成技巧写出来,这是面向菜鸟的,老鸟请不要拍砖呀,我的头还不够硬
不过还是希望老鸟们多多指教了,现在切入正题:&
随机函数:rand()&
在查询分析器中执行:select rand(),可以看到结果会是类似于这样的随机小数:0.89558,&
像这样的小数在实际应用中用得不多,一般要取随机数都会取随机整数。那就看下面的两种随机取整数的方法:&
select floor(rand()*N) ---生成的数是这样的:12.0&
select cast( floor(rand()*N) as int) ---生成的数是这样的:12&
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是一个你指定的整数,表是取得记录的条数&。
你最喜欢的PostgreSQL – QDAC官方网站
PostgreSQL 支持从服务器端向客户端主动推送通知信息,前提是客户端监听指定名称的通知。这样做的好处是客户端可以监测服务器端的数据改变,以便更新本地的数据等行为,尤其是适合字典类型的数据及时更新。 首先,客户端使用 Listen 指令来通知服务器自己要监听的通知的名称。然后一旦有人触发了这个通知(如果触发是在事务
1、不注册成服务,用的时候直接打开(命令行窗口不能关闭) @ECHO OFF IF NOT EXIST %cd%\bin GOTO Error IF NOT EXIST %cd%\lib GOTO Error IF NOT EXIST %cd%\share GOTO Error IF NOT EXIST %cd%\St
取月份的起始日期很容易:
date_trunc('month',该月中的某一天)
date_trunc('month',该月中的某一天)
取月份中的结束日期(实际上是下个月的1号0点)
date_trunc('month',该月中的某一天)+'1month'::interval
date_trunc('month',该月中的某一天)+'1month'::interval
如果不想取下个月1号的0点,就再减去1天就好了。
date_trunc('month',该月中的某一天)+'1month'::interval-'1day'::interval
date_trunc('month',该月中的某一天)+'1month'::interval-'1day'::interval
如果一个函数的返回值是固定的,那么我们可以将多次重复调用合并为一次,然后用一个常量代替。 这是编译器的一个常规优化技巧,做脚本解释器的话,也应该考虑到,以便提高运行效率。
一句代码,ADate为指定的日期,AQuarterStart为返回的季度起始日期 AQuarterStart=date_trunc(‘quarter’,ADate);
PostgreSQL可以使用datepart/Extract从日期时间类型中抽取部分内容,帮助内容如下: EXTRACT(fieldFROMsource) extract函数从日期/时间数值里抽取子域,比如年、小时等。 source必须是一个 typetimestamp,time,interval类型的值 表达式(类型
说起来觉得很复杂,实际上很简单,对于有主键的数据库,如果值是整数,则那随便生成一个随机数,是最大值和最小值之间的一个值,然后取大于随机数的一个第记录就可以。如果没有别的方式,可以按随机数排序,如下:
select top 1 * from 表名 order by random()
select top 1 * from 表名 order by random()
或 [crayon-58bd92e6f
PostgreSQL有整数转为字符串的函数to_hex,但却没有提供反过来的函数,因为要用到,写了一个与大家分享。
create or replace function hex_to_int(s character varying)
returns bigint
lead=left(s,1);
if (lead='$') or (lead='h') or (lead='H') then
lead=right(s,length(s)-1);
lead=left(s,2);
if (lead='0x') or (lead='0X') then
lead=right(s,length(s)-2);
raise exception '% 不是一个有效的十六进制数',s;
s='x'||repeat('0',16-length(lead))||
--raise notice 'hexchars=%',s;
retval=cast(cast(s as bit(64)) as bigint);
$$ language plpg
123456789101112131415161718192021222324252627
create or replace function hex_to_int(s character varying)returns bigintas$$declare&&retval bigint;&&lead character varying;beginlead=left(s,1);if (lead='$') or (lead='h') or (lead='H') then&&lead=right(s,length(s)-1);else&&begin&&lead=left(s,2);&&if (lead='0x') or (lead='0X') then&&&&lead=right(s,length(s)-2);&&else&&&&raise exception '% 不是一个有效的十六进制数',s;&&end if;&&end;end if;s='x'||repeat('0',16-length(lead))||lead;--raise notice 'hexchars=%',s;retval=cast(cast(s as bit(64)) as bigint);return end;$$ language plpgsql immutable strict;
调用时,只需要简单的将其赋值给一个变量,或者如select hex_to_int(&#0’);这样子调用一
有时候,我们知道一周的某一天,但需要这周起始是那一天,结束是那一天。在PostgreSQL及绝大多数语言中,都没有提供这么一个函数,也许是用的人少吧,毕竟一般的统计报表都是日报、月报、季报或年报,周报相对较少。
我写了两个计算指定日期所在周的开始和结束日期的函数,分享给大家。
1、WeekSta
PostgreSQL在客户端出错时,服务器端返回了丰富的错误信息,当然最终返回到上层的只是一部分。参考Pg的文档,出现在 ErrorResponse 和 NoticeResponse 消息里由多个字段构成。 每个字段类型有一个单字节标识记号。请注意,任意给定的字段类型在每条消息里都应该最多出现一次。 S 严重性}

我要回帖

更多关于 postgresql最短路径 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信