是否可以在MySQL中为RAND()函数设置种子? 我需要这个用于单元测试,以确保我知道预期的结果是什么。
在PHP中,我们只会这样做:
<?php srand(12345); echo rand(); ?>
在我的模型中,我目前有一个查询:
SELECT * FROM table ORDER BY RAND() LIMIT 1;
现在在我的单元测试中,我想确保我知道RAND()的种子是什么,所以我知道查询返回哪条记录。
也许在我的模型中的查询之前执行额外的查询?
我知道我可以为RAND()添加一个参数,但这不是我想要的;我不想修改查询。
PS。我正在使用Linux;它可能有助于为/ dev / random设置种子吗?
答案 0 :(得分:2)
您可以参考:MySQL RAND with with parameter
RAND
函数支持将用作种子的参数RAND(N)
。
答案 1 :(得分:0)
通常,我们不对SQL函数进行单元测试,我们对调用SQL函数的代码进行单元测试。
所以也许不是测试特定的返回值,只是测试你得到一些值。如果查询返回一个值,您知道它正在“工作”,并且您仍然与MySQL的内部技术保持隔离。您也不必修改您的查询。