文章目录
- toTypeName(operator) 查看数据类型
-
- plus(a, b) 计算数值总和
-
- minus(a, b) 计算数值之差
-
- multiply(a, b) 计算数值的乘积
-
- divide(a, b) 计算数值的商
-
- intDiv(a,b) 计算数值的商
-
- intDivOrZero(a,b)
-
- modulo(a, b) 计算除法后的余数。
-
- moduloOrZero(a, b)
-
- negate(a) 取反函数
-
- abs(a) 绝对值函数
-
- gcd(a,b) 计算两数值最大公约数
-
- lcm(a,b) 计算两数值最小公倍数
-
对于所有算术函数,结果类型为结果所在的最小数值类型(如果存在这样的类型)。最小数值类型是根据数值的位数,是否有符号以及是否是浮点类型而同时进行的。如果没有足够的位,则采用最高位类型。
toTypeName(operator) 查看数据类型
函数说明:
函数 | 用途 | 举例 | 结果 |
---|
toTypeName(operator) | 返回数据的类型 ,operator的值可以是任何类型 | toTypeName(toDate(‘2018-12-24’)) | 返回 Date |
函数实例:
SELECT toTypeName(toDate('2021-05-20'));
┌─toTypeName(toDate('2021-05-20'))─┐
│ Date │
└──────────────────────────────────┘
SELECT toTypeName(0),toTypeName(0 + 0),toTypeName((0 + 0) + 0),toTypeName(((0 + 0) + 0) + 0)
┌─toTypeName(0)─┬─toTypeName(plus(0, 0))─┬─toTypeName(plus(plus(0, 0), 0))─┬─toTypeName(plus(plus(plus(0, 0), 0), 0))─┐
│ UInt8 │ UInt16 │ UInt32 │ UInt64 │
└───────────────┴────────────────────────┴─────────────────────────────────┴──────────────────────────────────────────┘
算术函数适用于UInt8,UInt16,UInt32,UInt64,Int8,Int16,Int32,Int64,Float32或Float64
中的任何类型。
plus(a, b) 计算数值总和
函数说明:
函数 | 用途 | 举例 | 结果 |
---|
plus(a, b) | 计算数值总和 | plus(50,1) | 返回结果51 |
参数类型说明:
1、Date
或DateTime
与整数进行相加。在Date
的情况下,和整数相加整数意味着添加相应的天数,日期类型值和整数值没有顺序要求。
2、对于DateTime
,这意味着添加相应的秒数,时间类型值和整数值没有顺序要求。
3、当然两个参数也可以是两个整数,同样没有顺序要求。
函数实例:
localhost :) select plus(50,1), plus(1,toDate('2021-05-20')),plus(toDate('2021-05-22'),-1),plus(toDateTime('2021-05-20 16:18:20'),1),plus(-1,toDateTime('2021-05-20 16:18:20'));
SELECT
50 + 1,
1 + toDate('2021-05-20'),
toDate('2021-05-22') + -1,
toDateTime('2021-05-20 16:18:20') + 1,
-1 + toDateTime('2021-05-20 16:18:20')
Query id: 0ab418ad-5821-49df-bd6f-8456b4b3e714
┌─plus(50, 1)─┬─plus(1, toDate('2021-05-20'))─┬─plus(toDate('2021-05-22'), -1)─┬─plus(toDateTime('2021-05-20 16:18:20'), 1)─┬─plus(-1, toDateTime('2021-05-20 16:18:20'))─┐
│ 51 │ 2021-05-21 │ 2021-05-21 │ 2021-05-20 16:18:21 │ 2021-05-20 16:18:19 │
└─────────────┴───────────────────────────────┴────────────────────────────────┴────────────────────────────────────────────┴─────────────────────────────────────────────┘
1 rows in set. Elapsed: 0.006 sec.
minus(a, b) 计算数值之差
函数说明:
函数 | 用途 | 举例 | 结果 |
---|
minus(a, b) | 计算数值之差,结果总是有符号的 | minus(10,1) | 返回结果9 |
参数类型说明:
1、Date
或DateTime
与整数进行相减。在Date
的情况下,和整数相减整数意味着减少相应的天数,日期类型值和整数值有严格顺序要求,日期类型必须为第一个参数。
2、对于DateTime
,这意味着添加相应的秒数,时间类型值和整数值有严格的顺序要求,时间类型必须为第一个参数。
3、当然两个参数也可以是两个整数,同样没有顺序要求。
函数实例:
localhost :) select minus(10,1),minus(10,-1),minus(toDate('2021-05-22'), -1),minus(toDate('2021-05-20'),1),minus(toDateTime('2021-05-20 16:18:20'), 1),minus(toDateTime('2021-05-20 16:18:20'), -1)
SELECT
10 - 1,
10 - -1,
toDate('2021-05-22') - -1,
toDate('2021-05-20') - 1,
toDateTime('2021-05-20 16:18:20') - 1,
toDateTime('2021-05-20 16:18:20') - -1
Query id: 25211a35-cd6e-4c18-a321-1223092b41d5
┌─minus(10, 1)─┬─minus(10, -1)─┬─minus(toDate('2021-05-22'), -1)─┬─minus(toDate('2021-05-20'), 1)─┬─minus(toDateTime('2021-05-20 16:18:20'), 1)─┬─minus(toDateTime('2021-05-20 16:18:20'), -1)─┐
│ 9 │ 11 │ 2021-05-23 │ 2021-05-19 │ 2021-05-20 16:18:19 │ 2021-05-20 16:18:21 │
└──────────────┴───────────────┴─────────────────────────────────┴────────────────────────────────┴─────────────────────────────────────────────┴──────────────────────────────────────────────┘
1 rows in set. Elapsed: 0.003 sec.
multiply(a, b) 计算数值的乘积
函数说明:
函数 | 用途 | 举例 | 结果 |
---|
multiply(a, b) | 计算数值的乘积 | multiply(1, 1) | 返回结果1 |
参数类型说明:
1、a、b两个参数类型可为自然数,可以为正整数,负整数,0。
2、a、b两个参数类型可为Float32类型。
3、a、b两个参数类型可为Float64类型。
函数实例:
localhost :) select multiply(-1,-1),multiply(-1,1),multiply(0,1),multiply(1,1),multiply(-1.12,1),multiply(-1.1,1)
SELECT
-1 * -1,
-1 * 1,
0 * 1,
1 * 1,
-1.12 * 1,
-1.1 * 1
Query id: 4778679f-10e2-46b4-8e7b-db3c1dae83ae
┌─multiply(-1, -1)─┬─multiply(-1, 1)─┬─multiply(0, 1)─┬─multiply(1, 1)─┬─multiply(-1.12, 1)─┬─multiply(-1.1, 1)─┐
│ 1 │ -1 │ 0 │ 1 │ -1.12 │ -1.1 │
└──────────────────┴─────────────────┴────────────────┴────────────────┴────────────────────┴───────────────────┘
1 rows in set. Elapsed: 0.004 sec.
divide(a, b) 计算数值的商
函数说明:
函数 | 用途 | 举例 | 结果 |
---|
divide(a, b) | 计算数值的商 ,结果类型始终是浮点类型。 | divide(1, 1) | 返回结果1 |
参数类型说明:
1、a、b
两个参数类型可为自然数,可以为正整数,负整数,0。
2、a、b
两个参数类型可为Float32类型。
3、a、b
两个参数类型可为Float64类型。
注意:
它不是整数除法。对于整数除法,请使用’intDiv’函数。当除以零时,你得到’inf’,‘- inf’或’nan’。
函数实例:
localhost :) select divide(-1,-1),divide(-1,1),divide(0,1),divide(1,1),divide(-1,1.12),divide(-1.1,1),divide(1.1, 0),divide(-1.1, 0),divide(0,0)
SELECT
-1 / -1,
-1 / 1,
0 / 1,
1 / 1,
-1 / 1.12,
-1.1 / 1,
1.1 / 0,
-1.1 / 0,
0 / 0
Query id: 475d947c-fd6f-49f2-bcc8-e80ecb19a9d6
┌─divide(-1, -1)─┬─divide(-1, 1)─┬─divide(0, 1)─┬─divide(1, 1)─┬────divide(-1, 1.12)─┬─divide(-1.1, 1)─┬─divide(1.1, 0)─┬─divide(-1.1, 0)─┬─divide(0, 0)─┐
│ 1 │ -1 │ 0 │ 1 │ -0.8928571428571428 │ -1.1 │ inf │ -inf │ nan │
└────────────────┴───────────────┴──────────────┴──────────────┴─────────────────────┴─────────────────┴────────────────┴─────────────────┴──────────────┘
1 rows in set. Elapsed: 0.003 sec.
intDiv(a,b) 计算数值的商
函数说明:
函数 | 用途 | 举例 | 结果 |
---|
intDiv(a, b) | 计算数值的商,向下舍入取整(按绝对值),除以零或将最小负数除以-1时抛出异常。 | intDiv(1, 1) | 返回结果1 |
参数类型说明:
1、a、b
两个参数类型可为自然数,可以为正整数,负整数,0。
2、a、b
两个参数类型可为Float32类型。
3、a、b
两个参数类型可为Float64类型。
注意:
除以零或将最小负数除以-1时抛出异常。
函数实例:
localhost :) select intDiv(1,1),intDiv(-1,-1),intDiv(-1,1),intDiv(0,1),intDiv(-inf,-1),intDiv(-1,1.12),intDiv(-1,1)
SELECT
intDiv(1, 1),
intDiv(-1, -1),
intDiv(-1, 1),
intDiv(0, 1),
intDiv(-inf, -1),
intDiv(-1, 1.12),
intDiv(-1, 1)
Query id: d081081f-59e1-464a-949f-d4da676aab5d
┌─intDiv(1, 1)─┬─intDiv(-1, -1)─┬─intDiv(-1, 1)─┬─intDiv(0, 1)─┬─────intDiv(-inf, -1)─┬─intDiv(-1, 1.12)─┬─intDiv(-1, 1)─┐
│ 1 │ 1 │ -1 │ 0 │ -9223372036854775808 │ 0 │ -1 │
└──────────────┴────────────────┴───────────────┴──────────────┴──────────────────────┴──────────────────┴───────────────┘
1 rows in set. Elapsed: 0.003 sec.
intDivOrZero(a,b)
函数说明:
函数 | 用途 | 举例 | 结果 |
---|
intDivOrZero(a, b) | 计算数值的商,向下舍入取整(按绝对值),与’intDiv’的不同之处在于它在除以零或将最小负数除以-1时返回零。 | intDivOrZero(1, 1) | 返回结果1 |
参数类型说明:
1、a、b
两个参数类型可为自然数,可以为正整数,负整数,0。
2、a、b
两个参数类型可为Float32类型。
3、a、b
两个参数类型可为Float64类型。
注意:
除以零或将最小负数除以-1时抛出异常。
函数实例:
localhost :) select intDivOrZero(1,1),intDivOrZero(-1,-1),intDivOrZero(-1,1),intDivOrZero(0,1),intDivOrZero(-inf,-1),intDivOrZero(-1,1.12),intDiv(-1,1)
SELECT
intDivOrZero(1, 1),
intDivOrZero(-1, -1),
intDivOrZero(-1, 1),
intDivOrZero(0, 1),
intDivOrZero(-inf, -1),
intDivOrZero(-1, 1.12),
intDiv(-1, 1)
Query id: ff421b79-5374-4302-8f38-4235714a0cf0
┌─intDivOrZero(1, 1)─┬─intDivOrZero(-1, -1)─┬─intDivOrZero(-1, 1)─┬─intDivOrZero(0, 1)─┬─intDivOrZero(-inf, -1)─┬─intDivOrZero(-1, 1.12)─┬─intDiv(-1, 1)─┐
│ 1 │ 1 │ -1 │ 0 │ -9223372036854775808 │ 0 │ -1 │
└────────────────────┴──────────────────────┴─────────────────────┴────────────────────┴────────────────────────┴────────────────────────┴───────────────┘
1 rows in set. Elapsed: 0.003 sec.
modulo(a, b) 计算除法后的余数。
函数说明:
函数 | 用途 | 举例 | 结果 |
---|
modulo(a, b) | 计算除法后的余数。除以零或将最小负数除以-1时抛出异常。 | modulo(1, 1) | 返回结果0 |
参数类型说明:
1、如果参数是浮点数,则通过删除小数部分将它们预转换为整数。
2、其余部分与C++中的含义相同。截断除法用于负数。
注意:
除以零或将最小负数除以-1时抛出异常。
函数实例:
localhost :) select modulo(1,1),modulo(-1.13301,-1),modulo(-1.12,1),modulo(0,1),modulo(-inf,-1),modulo(-1,1.12),modulo(-1,1)
SELECT
1 % 1,
-1.13301 % -1,
-1.12 % 1,
0 % 1,
-inf % -1,
-1 % 1.12,
-1 % 1
Query id: 3bd0704a-8c10-4f37-b6c5-68414b76b1c1
┌─modulo(1, 1)─┬─modulo(-1.13301, -1)─┬────modulo(-1.12, 1)─┬─modulo(0, 1)─┬─modulo(-inf, -1)─┬─modulo(-1, 1.12)─┬─modulo(-1, 1)─┐
│ 0 │ -0.13301000000000007 │ -0.1200000000000001 │ 0 │ nan │ -1 │ 0 │
└──────────────┴──────────────────────┴─────────────────────┴──────────────┴──────────────────┴──────────────────┴───────────────┘
1 rows in set. Elapsed: 0.002 sec.
moduloOrZero(a, b)
函数说明:
函数 | 用途 | 举例 | 结果 |
---|
moduloOrZero(a, b) | 计算除法后的余数。除以零或将最小负数除以-1时抛出异常。和modulo不同之处在于,除以0时结果返回0。 | moduloOrZero(1, 1) | 返回结果0 |
函数实例:
localhost :) select moduloOrZero(1,1),moduloOrZero(-1.13301,-1),moduloOrZero(-1.12,1),moduloOrZero(0,1),moduloOrZero(-inf,-1),moduloOrZero(-1,1.12),moduloOrZero(-1,1),moduloOrZero(-1,0)
SELECT
moduloOrZero(1, 1),
moduloOrZero(-1.13301, -1),
moduloOrZero(-1.12, 1),
moduloOrZero(0, 1),
moduloOrZero(-inf, -1),
moduloOrZero(-1, 1.12),
moduloOrZero(-1, 1),
moduloOrZero(-1, 0)
Query id: f654ef31-1dc3-4d69-b535-643615d6545c
┌─moduloOrZero(1, 1)─┬─moduloOrZero(-1.13301, -1)─┬─moduloOrZero(-1.12, 1)─┬─moduloOrZero(0, 1)─┬─moduloOrZero(-inf, -1)─┬─moduloOrZero(-1, 1.12)─┬─moduloOrZero(-1, 1)─┬─moduloOrZero(-1, 0)─┐
│ 0 │ -0.13301000000000007 │ -0.1200000000000001 │ 0 │ nan │ -1 │ 0 │ 0 │
└────────────────────┴────────────────────────────┴────────────────────────┴────────────────────┴────────────────────────┴────────────────────────┴─────────────────────┴─────────────────────┘
1 rows in set. Elapsed: 0.004 sec.
negate(a) 取反函数
函数说明:
函数 | 用途 | 举例 | 结果 |
---|
negate(a) | 通过改变数值的符号位对数值取反,结果总是有符号的 | negate(1) | 返回结果-1 |
函数实例:
localhost :) select negate(1),negate(-1),negate(0),negate(1.11),negate(-1.11)
SELECT
- 1,
- -1,
- 0,
- 1.11,
- -1.11
Query id: 8b24845e-2e86-4011-995e-cfc94f8602ac
┌─negate(1)─┬─negate(-1)─┬─negate(0)─┬─negate(1.11)─┬─negate(-1.11)─┐
│ -1 │ 1 │ 0 │ -1.11 │ 1.11 │
└───────────┴────────────┴───────────┴──────────────┴───────────────┘
1 rows in set. Elapsed: 0.003 sec.
abs(a) 绝对值函数
函数说明:
函数 | 用途 | 举例 | 结果 |
---|
abs(a) | 计算数值(a)的绝对值 | abs(1) | 返回结果1 |
1、如果a < 0,它返回-a。
2、对于无符号类型,它不执行任何操作。
3、对于有符号整数类型,它返回无符号数。
函数实例:
localhost :) select abs(1),abs(-1),abs(0),abs(1.11),abs(-1.11)
SELECT
abs(1),
abs(-1),
abs(0),
abs(1.11),
abs(-1.11)
Query id: fd55b288-fa59-478c-87f2-78966499d011
┌─abs(1)─┬─abs(-1)─┬─abs(0)─┬─abs(1.11)─┬─abs(-1.11)─┐
│ 1 │ 1 │ 0 │ 1.11 │ 1.11 │
└────────┴─────────┴────────┴───────────┴────────────┘
1 rows in set. Elapsed: 0.003 sec.
gcd(a,b) 计算两数值最大公约数
函数说明:
函数 | 用途 | 举例 | 结果 |
---|
gcd(a,b) | 返回数值的最大公约数。除以零或将最小负数除以-1时抛出异常。 | gcd(12,3) | 返回结果3 |
函数实例:
localhost :) select gcd(123,26)
SELECT gcd(123, 26)
Query id: 853fb8c2-ecc9-4fff-8465-d1347af48d49
┌─gcd(123, 26)─┐
│ 1 │
└──────────────┘
1 rows in set. Elapsed: 0.002 sec.
lcm(a,b) 计算两数值最小公倍数
函数说明:
函数 | 用途 | 举例 | 结果 |
---|
lcm(a,b) | 返回数值的最小公倍数。除以零或将最小负数除以-1时抛出异常。 | lcm(12,3) | 返回结果12 |
函数实例:
SELECT lcm(123, 26)
Query id: c3f77245-a338-4809-98ef-684c0b1dc93d
┌─lcm(123, 26)─┐
│ 3198 │
└──────────────┘
1 rows in set. Elapsed: 0.002 sec.