CONV
📄字数 632
👁️阅读量 加载中...
功能描述
在不同数字进制之间转换数字。
语法格式
sql
CONV(expr, from_base, to_base)输入参数
expr:被转换的数据,VARCHAR类型或者能隐式转换为VARCHAR类型的其他类型的值或者表达式。from_base:原进制,TINYINT类型;若from_base为负数,则expr被视为有符号数,否则视为无符号数,输入取值范围(整数)为[-36,-2]U[2, 36]。to_base:要转换的进制,TINYINT类型,取值范围(整数)为[-36,-2]U[2, 36]。
提示
- 当输入参数中包含数字字符和其他字符时,函数内部仅计算字符串头部的数字字符,如
CONV('255Hello',10,16)等效于CONV('255',10,16),输出结果为FF。
输出结果
输出结果为 VARCHAR 类型(精度最大64),任意输入参数为 NULL 或者进制取值超出取值范围,则输出结果为 NULL 。
执行类型
| TYPE | VALUE | 说明 |
|---|---|---|
| NATIVE | 0 | 函数只能在本地计算 |
| VOLATI | 0 | 函数的每次计算值不同 |
| STABLE | 0 | 函数的每次计算值相同 |
| COMPUTE | 0 | 函数支持预计算取值 |
| NOT_CONST | 0 | 函数不支持转常数 |
| HAVE_DEF | 0 | 函数参数有默认值 |
示例
sql
-- 20从10进制转换为16进制
SQL> SELECT CONV('20',10, 16);
+-------+
| EXPR1 |
+-------+
| 14 |
+-------+
-- 'a'从16进制转换为2进制
SQL> SELECT CONV('a',16,2);
+-------+
| EXPR1 |
+-------+
| 1010 |
+-------+
-- '6E'从18进制转换为8进制
SQL> SELECT CONV('6E',18,8);
+-------+
| EXPR1 |
+-------+
| 172 |
+-------+
-- -17从10进制转换为-18进制
SQL> SELECT CONV(-17,10,-18);
+-------+
| EXPR1 |
+-------+
| -H |
+-------+