有人能帮我把base32值转换成十进制数字吗?我有一个sql语句,它返回一个base32值的列表。例如,select返回如下所示:
5
8
H
13r
现在,我需要弄清楚这些值中哪个值最高(在本例中是13r)。因此,我需要一个函数来将这些base32值转换为十进制数,以便对它们进行排序。有没有人有这样的功能,还是有人有不同的方法?
发布于 2019-11-21 16:14:11
这会有点棘手。
您可以创建一个function,它将每个字符/数字从原始的base32数字中分离出来,并将其与32^( base32数字中的位置)相乘,以获得十进制等效数字,并在查询中使用该function。
创建函数convert32todecimal(p_num in varchar2)返回号作为lv_outnum号;将select sum( val )从(选择幂(32,pos) *当d在'0‘和'9’之间时开始选择和( lv_outnum (D)upper 10 + ascii(d) - ascii('A')结束为val from (选择上游(p_num,长度(P_num)+1级,1)) d,二级<=长度(P_num)作为二级连接的pos );返回lv_outnum;结束;/
现在,在查询中使用此函数如下:
和your_data(num)为(从双结合中选择'5‘,从双结合中选择'8’,从双结合中选择'H‘,从双结合中选择'13r’)选择num,从your_data顺序中选择convert32todecimal(num);
干杯!!
https://stackoverflow.com/questions/58978589
复制相似问题