我看到了一些奇怪的东西,我想不通了.我有一个postgres函数:
-- Random int between low and high
CREATE OR REPLACE FUNCTION rand_between(low INTEGER, high INTEGER)
RETURNS INTEGER AS
$$
BEGIN
RETURN floor(random() * (high - low + 1) + low);
END;
$$ language 'plpgsql' STRICT;
就其本身而言,它的效果很好:
SELECT rand_between(1, 512);
rand_between
------------
42
我有一个包含唯一整数和文本值的小表:
CREATE TABLE IF NOT EXISTS random_names
(
id INTEGER NOT NULL UNIQUE,
value text NOT NULL
);
insert into random_names (id, value)
values
(1, 'AARON'),
(2, 'ABEL'),
(3, 'ADAM'),
(4, 'ALAN'),
(5, 'ALEX'),
(6, 'ALLAN'),
(7, 'ALLEN'),
(8, 'ALTON'),
(9, 'ALVIN'),
(10, 'AMOS');
现在,当我在WHERE子句的另一个查询中使用它时,我有时没有甚至多个记录:
SELECT value FROM random_names WHERE id = rand_between(1, 10);
为什么我有时会得到一条空记录或多条记录?我不明白,我希望这个数据集只有一个结果.我不明白,谢谢你的帮助.