KingbseES函数介绍hex
关键字
兼容hex函数、人大金仓、KingbaseES、
问题描述
语法:hex(arg);
功能:将一个字符串或数字转换为十六进制格式的字符串。
其中参数arg分为两种:字符串参数str,数字参数N。
- 对于字符串参数str,hex返回str的十六进制字符串,其中str中每个字符的每个字节的编码以两个十六进制数字表示。
- 对于数字参数N分为两种情况:N为整数时,若超出bigint最大范围,则输出7FFFFFFFFFFFFFFF,若未超出hex将N值的十六进制字符串表示将10进制数以16进制形式显示;N为小数时,会先将N四舍五入为整数再进行hex函数执行;N为负数时,前面补F按照正常逻辑转换为十六进制格式的字符串。
- 若参数是其他类型,会先转化为字符串然后按字符串进行处理。
问题分析
关于转16进制函数hex,mysql和kes均含有该函数,为进一步验证两函数功能相同,做了一下测试点:
- 传参个数:kes中的kes函数可以接受一个传参,mysql中也只能接受以个参数;
- 对于超出一个传参时,报错相同;
- 传参最大均接受bigint大小
- 两个函数均为输入null,传出null;
- 对于传入空字符串‘’,返回结果也为空字符串;
- 对于输入相同参数,两函数返回值相同;
- 均支持输入数字3,自动转为字符串类型,按字符串逻辑处理;
- 若超出bigint最大范围,则输出7FFFFFFFFFFFFFFF;
- 对于性能问题,查询100条数据,kes下hex (cost=0.00..49.55 rows=2260 width=32) (actual time=0.002..0.002 rows=0 loops=1);mysql下hex (cost=10.25 rows=100) (actual time=0.039..0.214 rows=100 loops=1)
结论
经过以上测试点的测试结果看:
Kes完全支持mysql中hex函数