今天在db2数据库中新增数据,想要生成UUID作为这条数据的主键,网上搜了一下给出的方法是lower(hex(rand())||hex(rand())),生成32位的UUID。新增完数据后,忍不住深究了一下,rand()是生成0到1中的随机数,小数位数不固定;hex()是将字符串的值用16进制表示(不太明白这个函数,字符串的值是指什么?)。我先是在db2数据库中运行了一下hex(rand()),发现它生成的都是16位的16进制数;之后我又用rand()随机生成了一些数,得到的数中有十八位的小数有十九位的小数,我再把得到的这些数分别放进hex()函数中,发现生成的16进制数有十六位的有十八位的还有二十位的。这我就不明白了,上面两种方式不应该是等价的吗?为什么结果却不一样?hex()函数的运行机制到底是怎么样的?还有hex()是将字符串的值转换成16进制,而rand()生成的却是浮点数,运行时是现将浮点数转换成字符串再进行处理吗?还有字符串的值是什么,是各个字符对应的编码拼在一起?求大神解答小白的问题,多谢了!
悬赏问题
- ¥15 要给毕业设计添加扫码登录的功能!!有偿
- ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
- ¥15 微信公众号自制会员卡没有收款渠道啊
- ¥15 stable diffusion
- ¥100 Jenkins自动化部署—悬赏100元
- ¥15 关于#python#的问题:求帮写python代码
- ¥20 MATLAB画图图形出现上下震荡的线条
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
- ¥15 perl MISA分析p3_in脚本出错
- ¥15 k8s部署jupyterlab,jupyterlab保存不了文件