我正在使用ora_hash获取一个看起来像这样的随机哈希。
SELECT ORA_HASH (userID || SYSTIMESTAMP || SYS_GUID ()) AS hash
FROM DUAL;
userID
是一个5位数的nNumber。
我已经测试了很长时间,并注意到它生成了一个长度在7到10位之间的数字。
现在我想知道是否有一种很好的方法来创建一个总是包含10位数的哈希值,意味着一个介于1000000000和9999999999之间的数字。
或者我应该从长度到数字10的差异并计算它?什么是最好的方式。
答案 0 :(得分:1)
你也可以修改你的查询以获得10位数的结果。可能你可以使用如下:
select case when length(hash_val)> 10 then
substr(hash_val,1,10)
when length(hash_val) < 10 then
lpad(hash_val,10,abs(dbms_random.random))
else
to_char(hash_val)
end
from (
SELECT ORA_HASH ('00000' || SYSTIMESTAMP || SYS_GUID ()) AS hash_val
FROM DUAL );
答案 1 :(得分:0)
foreach($responses->value->messageTaskList as $key => $value) {
echo $value->id . ", " . $value->text . "<br>";
}
应该做的伎俩(不会达到9999999999,因为ora_hash只能达到4294967295,所以+1000000000最多可以达到5294967295)