它们是floor()与rand()函数,下面分别介绍下。
1、floor(f)
返回一个不大于f的最大整数
2、rand(),rand(n)
返回一个随机浮点值 v ,范围在 0 到1 之间 (即, 其范围为 0 ≤ v ≤ 1.0)。若已指定一个整数参数 N ,则它被用作种子值,用来产生重复序列。
若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1))。
例如, 在7到 12 的范围(包括7和12)内得到一个随机整数,使用语句:
SELECT FLOOR(7 + (RAND() * 6))
access中产生随机数用rnd函数。
如:
select rnd()执行结果:
说明:
rnd() 产生一个大于等于0 且小于 1的随机数,如果要产生[m,n]中随机的整数公式:int((n-m+1)*rnd)+m
int(rnd()*1000)表达式产生大于0,小于1000的整数
int(rnd()*900)+100表达式产生大于100,小于1000的整数
-- 只插入关键的几列, 其他列就不折腾了.
CREATE TABLE #count_card (
card_id INT,
card_number varchar(10),
card_pass varchar(20)
)
GO
-- 假设插入 10行, 首字母 A
INSERT INTO #count_card
SELECT
t.number,
'A' + RIGHT( REPLICATE('0', 8) + CAST(t.number as varchar) , 8),
RIGHT(STR(RAND(t.number + 100*RAND()), 18, 17),12)
FROM
master..spt_values t
WHERE
t.type='P'
AND t.number between 1 and 10
GO
-- 核对数据.
SELECT * FROM #count_card
GO
card_id card_number card_pass
----------- ----------- --------------------
1 A00000001 894660572885
2 A00000002 080990285468
3 A00000003 267319998049
4 A00000004 453649710632
5 A00000005 639979423213
6 A00000006 826309135795
7 A00000007 012638848378
8 A00000008 198968560959
9 A00000009 385298273542
10 A00000010 571627986123
(10 行受影响)
-- 注: 本查询使用了 master..spt_values 表, 用于获取一个 连续的编号。
-- 但是这个表的行数不多.
-- 这个 表里面,最大支持的数量是:
SELECT
MIN(number), MAX(number)
FROM
master..spt_values
WHERE
type='P'
----------- -----------
0 2047
(1 行受影响)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)