• 关于 sqrt函数 的搜索结果

回答

Python求平方根至少有三种方式1.最简单的方式是求0.5次方14 ** 0.52.使用math包的sqrt函数1math.sqrt(4)3.使用numpy包的sqrt函数1numpy.sqrt(4)

xuning715 2019-12-02 01:10:28 0 浏览量 回答数 0

回答

可以通过math模块的sqrt函数来实现:>>> import math >>> a = 10 >>> b = math.sqrt(a) >>> b 3.1622776601683795

lusing 2019-12-02 01:06:02 0 浏览量 回答数 0

回答

关于程序优化的第一个准则是“不要优化”,第二个准则是“不要优化那些无关紧要的部分”。 如果你的程序运行缓慢,首先你得使用14.13小节的技术先对它进行性能测试找到问题所在。 通常来讲你会发现你得程序在少数几个热点地方花费了大量时间, 比如内存的数据处理循环。一旦你定位到这些点,你就可以使用下面这些实用技术来加速程序运行。 使用函数 很多程序员刚开始会使用Python语言写一些简单脚本。 当编写脚本的时候,通常习惯了写毫无结构的代码,比如: # somescript.py import sys import csv with open(sys.argv[1]) as f: for row in csv.reader(f): # Some kind of processing pass 很少有人知道,像这样定义在全局范围的代码运行起来要比定义在函数中运行慢的多。 这种速度差异是由于局部变量和全局变量的实现方式(使用局部变量要更快些)。 因此,如果你想让程序运行更快些,只需要将脚本语句放入函数中即可: # somescript.py import sys import csv def main(filename): with open(filename) as f: for row in csv.reader(f): # Some kind of processing pass main(sys.argv[1]) 速度的差异取决于实际运行的程序,不过根据经验,使用函数带来15-30%的性能提升是很常见的。 尽可能去掉属性访问 每一次使用点(.)操作符来访问属性的时候会带来额外的开销。 它会触发特定的方法,比如 __getattribute__() 和 __getattr__() ,这些方法会进行字典操作操作。 通常你可以使用 from module import name 这样的导入形式,以及使用绑定的方法。 假设你有如下的代码片段: import math def compute_roots(nums): result = [] for n in nums: result.append(math.sqrt(n)) return result # Test nums = range(1000000) for n in range(100): r = compute_roots(nums) 在我们机器上面测试的时候,这个程序花费了大概40秒。现在我们修改 compute_roots() 函数如下: from math import sqrt def compute_roots(nums): result = [] result_append = result.append for n in nums: result_append(sqrt(n)) return result 修改后的版本运行时间大概是29秒。唯一不同之处就是消除了属性访问。 用 sqrt() 代替了 math.sqrt() 。 The result.append() 方法被赋给一个局部变量 result_append ,然后在内部循环中使用它。 不过,这些改变只有在大量重复代码中才有意义,比如循环。 因此,这些优化也只是在某些特定地方才应该被使用。 理解局部变量 之前提过,局部变量会比全局变量运行速度快。 对于频繁访问的名称,通过将这些名称变成局部变量可以加速程序运行。 例如,看下之前对于 compute_roots() 函数进行修改后的版本: import math def compute_roots(nums): sqrt = math.sqrt result = [] result_append = result.append for n in nums: result_append(sqrt(n)) return result 在这个版本中,sqrt 从 match 模块被拿出并放入了一个局部变量中。 如果你运行这个代码,大概花费25秒(对于之前29秒又是一个改进)。 这个额外的加速原因是因为对于局部变量 sqrt 的查找要快于全局变量 sqrt 对于类中的属性访问也同样适用于这个原理。 通常来讲,查找某个值比如 self.name 会比访问一个局部变量要慢一些。 在内部循环中,可以将某个需要频繁访问的属性放入到一个局部变量中。例如: # Slower class SomeClass: ... def method(self): for x in s: op(self.value) # Faster class SomeClass: ... def method(self): value = self.value for x in s: op(value) 避免不必要的抽象 任何时候当你使用额外的处理层(比如装饰器、属性访问、描述器)去包装你的代码时,都会让程序运行变慢。 比如看下如下的这个类: class A: def __init__(self, x, y): self.x = x self.y = y @property def y(self): return self._y @y.setter def y(self, value): self._y = value 现在进行一个简单测试: >>> from timeit import timeit >>> a = A(1,2) >>> timeit('a.x', 'from __main__ import a') 0.07817923510447145 >>> timeit('a.y', 'from __main__ import a') 0.35766440676525235 >>> 可以看到,访问属性y相比属性x而言慢的不止一点点,大概慢了4.5倍。 如果你在意性能的话,那么就需要重新审视下对于y的属性访问器的定义是否真的有必要了。 如果没有必要,就使用简单属性吧。 如果仅仅是因为其他编程语言需要使用getter/setter函数就去修改代码风格,这个真的没有必要。 使用内置的容器 内置的数据类型比如字符串、元组、列表、集合和字典都是使用C来实现的,运行起来非常快。 如果你想自己实现新的数据结构(比如链接列表、平衡树等), 那么要想在性能上达到内置的速度几乎不可能,因此,还是乖乖的使用内置的吧。 避免创建不必要的数据结构或复制 有时候程序员想显摆下,构造一些并没有必要的数据结构。例如,有人可能会像下面这样写: values = [x for x in sequence] squares = [x*x for x in values] 也许这里的想法是首先将一些值收集到一个列表中,然后使用列表推导来执行操作。 不过,第一个列表完全没有必要,可以简单的像下面这样写: squares = [x*x for x in sequence] 与此相关,还要注意下那些对Python的共享数据机制过于偏执的程序所写的代码。 有些人并没有很好的理解或信任Python的内存模型,滥用 copy.deepcopy() 之类的函数。 通常在这些代码中是可以去掉复制操作的。

哦哦喔 2020-04-17 17:36:46 0 浏览量 回答数 0

海外云虚拟主机包年25元/月起

海外独享虚拟主机全面上线,助力构建海外网站,提升公司国际形象;全球有效覆盖,超高性价比;建站入门首选,助力出口,适合跨境贸易企业。

回答

创建一个接受Point类型对象的函数。该函数返回原始点和通过点之间的距离 public void distance(Point po) { //here I need somehow use only two variables instead of four double res = Math.sqrt( Math.pow(getX() - po.getX(), 2) + Math.pow(getY() - po.getY(), 2) ); System.out.println(res); } 另外,您计算距离的函数是错误的。 答案来源:stackoverflow

七天一失眠 2020-04-11 15:48:50 0 浏览量 回答数 0

问题

如何高效寻找素数?5月19日【今日算法】

游客ih62co2qqq5ww 2020-05-19 14:00:27 1 浏览量 回答数 1

回答

可以检查一下头文件是否包含了的库C++编译错误C2365可以不用这个函数,随便用个其他的,比如sqrt

杨冬芳 2019-12-02 03:09:38 0 浏览量 回答数 0

回答

这个函数是判断num是否是质数,判断num是否能被小于sqrt(num)大于2的数整除,如果没有这样的数,那么num是质数

a123456678 2019-12-02 02:18:58 0 浏览量 回答数 0

回答

如果你只是简单的想测试下你的程序整体花费的时间, 通常使用Unix时间函数就行了,比如: bash % time python3 someprogram.py real 0m13.937s user 0m12.162s sys 0m0.098s bash % 如果你还需要一个程序各个细节的详细报告,可以使用 cProfile 模块: bash % python3 -m cProfile someprogram.py 859647 function calls in 16.016 CPU seconds Ordered by: standard name ncalls tottime percall cumtime percall filename:lineno(function) 263169 0.080 0.000 0.080 0.000 someprogram.py:16(frange) 513 0.001 0.000 0.002 0.000 someprogram.py:30(generate_mandel) 262656 0.194 0.000 15.295 0.000 someprogram.py:32(<genexpr>) 1 0.036 0.036 16.077 16.077 someprogram.py:4(<module>) 262144 15.021 0.000 15.021 0.000 someprogram.py:4(in_mandelbrot) 1 0.000 0.000 0.000 0.000 os.py:746(urandom) 1 0.000 0.000 0.000 0.000 png.py:1056(_readable) 1 0.000 0.000 0.000 0.000 png.py:1073(Reader) 1 0.227 0.227 0.438 0.438 png.py:163(<module>) 512 0.010 0.000 0.010 0.000 png.py:200(group) ... bash % 不过通常情况是介于这两个极端之间。比如你已经知道代码运行时在少数几个函数中花费了绝大部分时间。 对于这些函数的性能测试,可以使用一个简单的装饰器: # timethis.py import time from functools import wraps def timethis(func): @wraps(func) def wrapper(*args, **kwargs): start = time.perf_counter() r = func(*args, **kwargs) end = time.perf_counter() print('{}.{} : {}'.format(func.__module__, func.__name__, end - start)) return r return wrapper 要使用这个装饰器,只需要将其放置在你要进行性能测试的函数定义前即可,比如: >>> @timethis ... def countdown(n): ... while n > 0: ... n -= 1 ... >>> countdown(10000000) __main__.countdown : 0.803001880645752 >>> 要测试某个代码块运行时间,你可以定义一个上下文管理器,例如: from contextlib import contextmanager @contextmanager def timeblock(label): start = time.perf_counter() try: yield finally: end = time.perf_counter() print('{} : {}'.format(label, end - start)) 下面是使用这个上下文管理器的例子: >>> with timeblock('counting'): ... n = 10000000 ... while n > 0: ... n -= 1 ... counting : 1.5551159381866455 >>> 对于测试很小的代码片段运行性能,使用 timeit 模块会很方便,例如: >>> from timeit import timeit >>> timeit('math.sqrt(2)', 'import math') 0.1432319980012835 >>> timeit('sqrt(2)', 'from math import sqrt') 0.10836604500218527 >>> timeit 会执行第一个参数中语句100万次并计算运行时间。 第二个参数是运行测试之前配置环境。如果你想改变循环执行次数, 可以像下面这样设置 number 参数的值: >>> timeit('math.sqrt(2)', 'import math', number=10000000) 1.434852126003534 >>> timeit('sqrt(2)', 'from math import sqrt', number=10000000) 1.0270336690009572 >>>

哦哦喔 2020-04-17 17:36:16 0 浏览量 回答数 0

回答

画布上所有变量名相同的变量视为同一变量。所有相同的变量共享连线信息。画布上每个变量必须连接且只能连接到决策变量,状态变量和中间变量其中的一个节点上。多个相同变量只需选择任意一个变量进行连接。引擎支持的决策变量小于20个,支持的约束条件小于20个。目标函数和约束条件中的输入的表达式需要同时满足以下条件:只允许填入由变量名、固有函数名、+、-、*、^、/、.、(、) 和数字组成的字符串。符合算术表达式的逻辑。变量名只支持字母,数字和中文,不支持纯数字的变量名。变量名和固有函数名不允许相同。引擎支持的常见函数包含:以自然常数e为底的指数函数,exp(x)以自然常数e为底的对数函数,log(x)非负实数的平方根函数,sqrt(x)x的y次幂指数函数,pow(x,y)绝对值函数,abs(x)x的y次方,x**y或x^yx加y,x + yx减y,x - yx乘y,x * yx除y,x / y目前不支持等式约束。简单的等式约束可通过公式化简代入其他约束和目标函数中。在测试运行中必须对每个状态变量进行赋值。在进行引擎配置前,首先需要在引擎配置页面左上角选择引擎版本号,版本号确定后,再进行配置,默认为最新版本。

剑曼红尘 2020-03-24 10:44:48 0 浏览量 回答数 0

问题

c++友元函数形参的问题

a123456678 2019-12-01 20:10:01 1003 浏览量 回答数 1

问题

不明原因的函数报错,求解决 ?报错

爱吃鱼的程序员 2020-06-23 20:55:53 0 浏览量 回答数 1

回答

楼主。看了你的错误信息,很明显根据提示可以知道,错误,**error C2065: ‘xxx’ : undeclared identifier **,1、如果xxx为cout、cin、scanf、printf、sqrt等,则程序中包含头文件有误 2、未定义变量、数组、函数原型等,注意拼写错误或区分大小写

爱吃鱼的程序员 2020-05-28 19:03:39 0 浏览量 回答数 0

回答

楼主。看了你的错误信息,很明显根据提示可以知道,错误,**error C2065: ‘xxx’ : undeclared identifier **,1、如果xxx为cout、cin、scanf、printf、sqrt等,则程序中包含头文件有误 2、未定义变量、数组、函数原型等,注意拼写错误或区分大小写

爱吃鱼的程序员 2020-05-28 13:36:16 0 浏览量 回答数 0

回答

我认为没有内置函数,但是您可以自己计算。 为此,请计算连续样本的均方根平均值。 rms = sqrt((sample0^2 + sample1^2 + sample2^2 + sample3^2) / numberOfSamples) 以下链接将为您提供帮助,因为它们包含两个出色的Android声音相关项目的完整源代码。 环状 排练助手

LiuWH 2020-01-23 13:00:28 0 浏览量 回答数 0

问题

PySpark Dataframe根据函数返回值创建新列

社区小助手 2019-12-01 19:25:32 829 浏览量 回答数 1

问题

Python中覆盖一小部分代码的最佳实践

kun坤 2019-12-26 10:47:52 0 浏览量 回答数 0

回答

假设机器精度无限,余弦定律和Haversine公式将给出相同的结果。Haversine公式对浮点错误更健壮。但是,当今的机器具有15位有效数字数量级的双精度,并且余弦定律可能对您来说很好。这两个公式都假定球面土,而维森特的迭代解(最准确)假定椭圆形土(实际上,地球甚至不是椭球面-它是一个大地水准面)。一些参考:http : //www.movable-type.co.uk/scripts/gis-faq-5.1.html 会变得更好:请注意余弦定律中使用的纬度以及Haversine是地心纬度,这与大地纬度不同。对于一个球体,这两个是相同的。 哪一个计算最快? 从最快到最慢的顺序是:余弦定律(5次三角函数调用)-> hasersine(涉及sqrt)-> Vicenty(必须在for循环中迭代解决) 哪一个最准确? 维森蒂。 同时考虑速度和准确性时,哪一个最好? 如果您的问题域使得对于您要计算的距离而言,地球可以认为是平坦的,那么您可以计算出一个公式,该公式为x = kx *经度差,y = ky *纬度差。然后距离= sqrt(dx dx + dy dy)。如果您的问题域可以用距离平方解决,那么您将不必使用sqrt,并且此公式将尽可能快地获得。它具有附加的优势,您可以计算矢量距离-x是向东的距离,y是向北的距离。否则,请尝试3,然后选择最适合您的情况。来源:stack overflow

保持可爱mmm 2020-05-17 17:01:13 0 浏览量 回答数 0

问题

搜索的相关性如何配置?

轩墨 2019-12-01 20:56:02 985 浏览量 回答数 0

问题

MaxCompute用户指南:SQL:内建函数:数学函数

行者武松 2019-12-01 22:02:58 1409 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 ABS 命令格式如下: Double abs(Double number) Bigint abs(Bigint number) Decimal abs(Decimal number) 命令说明如下: 该函数用于返回number的绝对值。 参数说明: number:当number为Double、Bigint或Decimal类型时。 输入为Bigint,返回Bigint。 输入为Double,返回Double类型。 输入为Decimal,返回Decimal类型。 若输入为String类型,会隐式转换为Double类型后参与运算,其它类型抛异常。 返回值: 返回Double、Bigint或Decimal类型,取决于输入参数的类型。若输入为null,则返回null。 说明 当输入Bigint类型的值超过Bigint的最大表示范围时,会返回Double类型,这种情况下可能会损失精度。 示例如下: abs(null)=null abs(-1)=1 abs(-1.2)=1.2 abs("-2")=2.0 abs(122320837456298376592387456923748)=1.2232083745629837e32 下面是一个完整的ABS函数在SQL中使用的示例,其他内建函数(除窗口函数、聚合函数外)的使用方式与其类似,不再举例。 select abs(id) from tbl1; -- 取tbl1表内id字段的绝对值 ACOS 命令格式如下: Double acos(Double number) Decimal acos(Decimal number) 命令说明如下: 该函数用于计算number的反余弦函数。 参数说明: number:Double类型或Decimal类型,-1 ≤ number ≤1。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型,值域在0 ~ π之间。若number为null,则返回null。 示例如下: acos("0.87")=0.5155940062460905 acos(0)=1.5707963267948966 ASIN 命令格式如下: Double asin(Double number) Decimal asin(Decimal number) 命令说明如下: 该函数用于计算number的反正弦函数。 参数说明: number:Double类型或Decimal类型,-1 ≤ number ≤1。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型,值域在-π/2 ~π/2之间。若number为null,返回null。 示例如下: asin(1)=1.5707963267948966 asin(-1)=-1.5707963267948966 ATAN 命令格式如下: Double atan(Double number) 命令说明如下: 该函数用于计算number的反正切函数。 参数说明: number:Double类型,若输入为String类型或Bigint类型,会隐式转换到Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型,值域在-π/2~π/2之间。若number为null,则返回null。 示例如下: atan(1)=0.7853981633974483 atan(-1)=-0.7853981633974483 CEIL 命令格式如下: Bigint ceil(Double value) Bigint ceil(Decimal value) 命令说明如下: 向上取整,函数返回不小于输入值value的最小整数。 参数说明: value:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换到Double类型后参与运算,其他类型抛异常。 返回值: 返回Bigint类型。任意一个参数输入为null,则返回null。 示例如下: ceil(1.1)=2 ceil(-1.1)=-1 CONV 命令格式如下: String conv(String input, Bigint from_base, Bigint to_base) 命令说明如下: 该函数为进制转换函数。 参数说明: input:以String表示的要转换的整数值,接受Bigint、Double的隐式转换。 from_base、to_base:以十进制表示的进制的值,可接受的的值为2、8、10和16。接受String及Double的隐式转换。 返回值: 返回String类型。任意一个参数输入为null,返回null。转换过程以64位精度工作,溢出时报异常。输入如果是负值,即以(-)开头,报异常。如果输入的是小数,则会转为整数值后进行进制转换,小数部分会被舍弃。 示例如下: conv('1100', 2, 10)='12' conv('1100', 2, 16)='c' conv('ab', 16, 10)='171' conv('ab', 16, 16)='ab' COS 命令格式如下: Double cos(Double number) Decimal cos(Decimal number) 命令说明如下: 该函数用于计算number的余弦函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换到Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 示例如下: cos(3.1415926/2)=2.6794896585028633e-8 cos(3.1415926)=-0.9999999999999986 COSH 命令格式如下: Double cosh(Double number) Decimal cosh(Decimal number) 命令说明如下: 该函数用于计算number的双曲余弦函数。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后,参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,返回null。 COT 命令格式如下: Double cot(Double number) Decimal cot(Decimal number) 命令说明如下: 该函数用于计算number的余切函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 EXP 命令格式如下: Double exp(Double number) Decimal exp(Decimal number) 命令说明如下: 该函数用于计算number的指数函数。 返回值: 返回number的指数值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 FLOOR 命令格式如下: Bigint floor(Double number) Bigint floor(Decimal number) 命令说明如下: 向下取整,函数返回不大于number的最大整数值。 参数说明: number:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Bigint类型。若number为null,则返回null。 示例如下: floor(1.2)=1 floor(1.9)=1 floor(0.1)=0 floor(-1.2)=-2 floor(-0.1)=-1 floor(0.0)=0 floor(-0.0)=0 LN 命令格式如下: Double ln(Double number) Decimal ln(Decimal number) 命令说明如下: 该函数用于返回number的自然对数。 参数说明: number:Double类型或Decimal类型。 若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 若number为null,则返回null。若number为负数或零,则执行报错。 返回值: 返回Double类型或Decimal类型。 LOG 命令格式如下: Double log(Double base, Double x) Decimal log(Decimal base, Decimal x) 命令说明如下: 该函数用于返回以base为底的x的对数。 参数说明: base:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 x:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型的对数值。 若base和x中存在null,则返回null。 若base和x中某一个值为负数或 0,会引发异常。 若base为1(会引发一个除零行为),也会引发异常。 POW 命令格式如下: Double pow(Double x, Double y) Decimal pow(Decimal x, Decimal y) 命令说明如下: 该函数用于返回x的y次方,即x^y。 参数说明: X:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 Y:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若x或y为null,则返回null。 RAND 命令格式如下: Double rand(Bigint seed) 命令说明如下: 该函数以seed为种子,返回Double类型的随机数,返回值区间是的0~1。 参数说明: seed:可选参数,Bigint类型,随机数种子,决定随机数序列的起始值。 返回值: 返回Double类型。 示例如下: select rand() from dual; select rand(1) from dual; ROUND 命令格式如下: Double round(Double number, [Bigint Decimal_places]) Decimal round(Decimal number, [Bigint Decimal_places]) 命令说明如下: 该函数四舍五入到指定小数点位置。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 Decimal_place:Bigint类型常量,四舍五入计算到小数点后的位置,其他类型参数会引发异常。如果省略表示四舍五入到个位数,默认值为0。 返回值: 返回Double类型或Decimal类型。若number或Decimal_places为null,则返回null。 说明 Decimal_places可以是负数。负数会从小数点向左开始计数,并且不保留小数部分。如果Decimal_places超过了整数部分长度,返回0。 示例如下: round(125.315)=125.0 round(125.315, 0)=125.0 round(125.315, 1)=125.3 round(125.315, 2)=125.32 round(125.315, 3)=125.315 round(-125.315, 2)=-125.32 round(123.345, -2)=100.0 round(null)=null round(123.345, 4)=123.345 round(123.345, -4)=0.0 SIN 命令格式如下所示: Double sin(Double number) Decimal sin(Decimal number) 命令说明如下: 该函数用于计算number的正弦函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 SINH 命令格式如下: Double sinh(Double number) Decimal sinh(Decimal number) 命令说明如下: 该函数用于计算number的双曲正弦函数。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 SQRT 命令格式如下: Double sqrt(Double number) Decimal sqrt(Decimal number) 命令说明如下: 该函数用于计算number的平方根。 参数说明: number:Double类型或Decimal类型,必须大于0,小于0时引发异常。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 TAN 命令说明如下: Double tan(Double number) Decimal tan(Decimal number) 命令说明如下: 该函数用于计算number的正切函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 TANH 命令格式如下: Double tanh(Double number) Decimal tanh(Decimal number) 命令说明如下: 该函数用于计算number的双曲正切函数。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 TRUNC 命令格式如下: Double trunc(Double number[, Bigint Decimal_places]) Decimal trunc(Decimal number[, Bigint Decimal_places]) 命令说明如下: 该函数用于将输入值number截取到指定小数点位置。 参数说明: number:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 Decimal_places:Bigint类型常量,要截取到的小数点位置,其他类型参数会隐式转为Bigint,省略此参数时默认到截取到个位数。 返回值: 返回值类型为Double或Decimal类型。若number或Decimal_places为null,则返回null。 说明 返回Double类型时,返回的结果的显示可能不符合预期,如示例trunc(125.815, 1)(这个Double类型显示问题任何系统都存在)。 截取掉的部分补0。 Decimal_places可以是负数,负数会从小数点向左开始截取,并且不保留小数部分。如果Decimal_places超过了整数部分长度,则返回0。 示例如下: trunc(125.815)=125.0 trunc(125.815,0)=125.0 trunc(125.815,1)=125.80000000000001 trunc(125.815,2)=125.81 trunc(125.815,3)=125.815 trunc(-125.815,2)=-125.81 trunc(125.815,-1)=120.0 trunc(125.815,-2)=100.0 trunc(125.815,-3)=0.0 trunc(123.345,4)=123.345 trunc(123.345,-4)=0.0 MaxCompute2.0扩展函数 升级到MaxCompute2.0后,产品扩展部分数学函数,新函数若用到新数据类型时,在使用新函数的SQL前,需要加一个set语句: set odps.sql.type.system.odps2=true; 下文将为您详细介绍新扩展的函数。 LOG2 命令格式如下: Double log2(Double number) Double log2(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于以2为底,返回number的对数。 参数说明: number:Double或Decimal类型。 返回值: 返回Double类型。若输入为0或null,则返回null。 示例如下: log2(null)=null log2(0)=null log2(8)=3.0 LOG10 命令格式如下: Double log10(Double number) Double log10(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于以10为底,返回number的对数。 参数说明: number:Double或Decimal类型。 返回值: 返回Double类型。若输入为0或null,则返回null。 示例如下: log10(null)=null log10(0)=null log10(8)=0.9030899869919435 BIN 命令格式如下: String bin(Bigint number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回number的二进制代码表示。 参数说明: number:Bigint类型。 返回值: 返回String类型。若输入为0,返回0,输入为null,则返回null。 示例如下: bin(0)='0' bin(null)='null' bin(12)='1100' HEX 命令格式如下: String hex(Bigint number) String hex(String number) String hex(BINARY number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于将整数或字符转换为十六进制格式。 参数说明: number:如果number是Bigint类型,那么返回number的十六进制表示。如果变量是String类型,则返回该字符串的十六进制表示。 返回值: 返回String类型。若输入为0,返回0,输入为null,则返回异常。 示例如下: hex(0)=0 hex('abc')='616263' hex(17)='11' hex('17')='3137' hex(null)异常返回失败 说明 当输入参数为Binary类型时,请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 UNHEX 命令格式如下: BINARY unhex(String number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回十六进制字符串所代表的字符串。 参数说明: number:为十六进制字符串。 返回值: 返回Binary类型,若输入0,返回失败,若输入为null,则返回null。 示例如下: unhex('616263')='abc' unhex(616263)='abc' RADIANS 命令格式如下: Double radians(Double number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于将角度转换为弧度。 参数说明: number:Double类型数据。 返回值: 返回Double类型,若输入为null,返回null。 示例如下: radians(90)=1.5707963267948966 radians(0)=0.0 radians(null)=null DEGREES 命令格式如下: Double degrees(Double number) Double degrees(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于将弧度转换为角度。 参数说明: number:Double或Decimal类型数据。 返回值: 返回Double类型,若输入null,则返回null。 示例如下: degrees(1.5707963267948966)=90.0 degrees(0)=0.0 degrees(null)=null SIGN 命令格式如下: Double sign(Double number) Double sign(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于取输入数据的符号,1.0表示正,-1.0表示负,否则0.0。 参数说明: number:Double或Decimal类型数据。 返回值: 返回Double类型,若输入0,则返回0.0,输入为null,则返回null。 示例如下: sign(-2.5)=-1.0 sign(2.5)=1.0 sign(0)=0.0 sign(null)=null E 命令格式如下: Double e() 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回e的值。 返回值: 返回Double类型。 示例如下: e()=2.718281828459045 PI 命令格式如下: Double pi() 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回π的值。 返回值: 返回Double类型。 示例如下: pi()=3.141592653589793 FACTORIAL 命令格式如下: Bigint factorial(Int number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回number的阶乘。 参数说明: number:Int类型数据,且在[0..20]之间。 返回值: 返回Bigint类型,输入为0,则返回1,输入为null或[0..20]之外的值,返回null。 示例如下: factorial(5)=120 --5!=5*4*3*2*1=120 CBRT 命令格式如下: Double cbrt(Double number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于计算number的立方根。 参数说明: number:Double类型数据。 返回值: 返回Double类型,输入为null,返回null。 示例如下: cbrt(8)=2 cbrt(null)=null SHIFTLEFT 命令格式如下: Int shiftleft(Tinyint|Smallint|Int number1, Int number2) Bigint shiftleft(Bigint number1, Int number2) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于按位左移(<<)。 参数说明: number1:Tinyint|Smallint|Int|Bigint整型数据。 number2:Int整型数据。 返回值: 返回Int或Bingint类型。 示例如下: shiftleft(1,2)=4 --1的二进制左移2位(1<<2,0001左移两位是0100) shiftleft(4,3)=32 --4的二进制左移3位(4<<3,0100左移3位是100000) SHIFTRIGHT 命令格式如下: Int shiftright(Tinyint|Smallint|Int number1, Int number2) Bigint shiftright(Bigint number1, Int number2) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于按位右移(>>)。 参数说明: number1:Tinyint|Smallint|Int|Bigint整型数据。 number2:Int整型数据。 返回值: 返回Int或Bigint类型。 示例如下: shiftright(4,2)=1 -- 4的二进制右移2位(4>>2,0100右移两位是0001) shiftright(32,3)=4 -- 32的二进制右移3位(32>>3,100000右移3位是0100) SHIFTRIGHTUNSIGNED 命令格式如下: Int shiftrightunsigned(Tinyint|Smallint|Int number1, Int number2) Bigint shiftrightunsigned(Bigint number1, Int number2) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于无符号按位右移(>>>)。 参数说明: number1:Tinyint|Smallint|Int|Bigint整型数据。 number2:Int整型数据。 返回值: 返回Int或Bigint类型。 示例如下: shiftrightunsigned(8,2)=2 --8的二进制无符号右移2位(8>>>2,1000右移两位是0010) shiftrightunsigned(-14,2)=1073741820 -- -14的二进制右移2位(-14>>>2, 11111111 11111111 11111111 11110010右移2位是 00111111 11111111 11111111 11111100)

2019-12-01 23:10:57 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 ABS 命令格式如下: Double abs(Double number) Bigint abs(Bigint number) Decimal abs(Decimal number) 命令说明如下: 该函数用于返回number的绝对值。 参数说明: number:当number为Double、Bigint或Decimal类型时。 输入为Bigint,返回Bigint。 输入为Double,返回Double类型。 输入为Decimal,返回Decimal类型。 若输入为String类型,会隐式转换为Double类型后参与运算,其它类型抛异常。 返回值: 返回Double、Bigint或Decimal类型,取决于输入参数的类型。若输入为null,则返回null。 说明 当输入Bigint类型的值超过Bigint的最大表示范围时,会返回Double类型,这种情况下可能会损失精度。 示例如下: abs(null)=null abs(-1)=1 abs(-1.2)=1.2 abs("-2")=2.0 abs(122320837456298376592387456923748)=1.2232083745629837e32 下面是一个完整的ABS函数在SQL中使用的示例,其他内建函数(除窗口函数、聚合函数外)的使用方式与其类似,不再举例。 select abs(id) from tbl1; -- 取tbl1表内id字段的绝对值 ACOS 命令格式如下: Double acos(Double number) Decimal acos(Decimal number) 命令说明如下: 该函数用于计算number的反余弦函数。 参数说明: number:Double类型或Decimal类型,-1 ≤ number ≤1。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型,值域在0 ~ π之间。若number为null,则返回null。 示例如下: acos("0.87")=0.5155940062460905 acos(0)=1.5707963267948966 ASIN 命令格式如下: Double asin(Double number) Decimal asin(Decimal number) 命令说明如下: 该函数用于计算number的反正弦函数。 参数说明: number:Double类型或Decimal类型,-1 ≤ number ≤1。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型,值域在-π/2 ~π/2之间。若number为null,返回null。 示例如下: asin(1)=1.5707963267948966 asin(-1)=-1.5707963267948966 ATAN 命令格式如下: Double atan(Double number) 命令说明如下: 该函数用于计算number的反正切函数。 参数说明: number:Double类型,若输入为String类型或Bigint类型,会隐式转换到Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型,值域在-π/2~π/2之间。若number为null,则返回null。 示例如下: atan(1)=0.7853981633974483 atan(-1)=-0.7853981633974483 CEIL 命令格式如下: Bigint ceil(Double value) Bigint ceil(Decimal value) 命令说明如下: 向上取整,函数返回不小于输入值value的最小整数。 参数说明: value:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换到Double类型后参与运算,其他类型抛异常。 返回值: 返回Bigint类型。任意一个参数输入为null,则返回null。 示例如下: ceil(1.1)=2 ceil(-1.1)=-1 CONV 命令格式如下: String conv(String input, Bigint from_base, Bigint to_base) 命令说明如下: 该函数为进制转换函数。 参数说明: input:以String表示的要转换的整数值,接受Bigint、Double的隐式转换。 from_base、to_base:以十进制表示的进制的值,可接受的的值为2、8、10和16。接受String及Double的隐式转换。 返回值: 返回String类型。任意一个参数输入为null,返回null。转换过程以64位精度工作,溢出时报异常。输入如果是负值,即以(-)开头,报异常。如果输入的是小数,则会转为整数值后进行进制转换,小数部分会被舍弃。 示例如下: conv('1100', 2, 10)='12' conv('1100', 2, 16)='c' conv('ab', 16, 10)='171' conv('ab', 16, 16)='ab' COS 命令格式如下: Double cos(Double number) Decimal cos(Decimal number) 命令说明如下: 该函数用于计算number的余弦函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换到Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 示例如下: cos(3.1415926/2)=2.6794896585028633e-8 cos(3.1415926)=-0.9999999999999986 COSH 命令格式如下: Double cosh(Double number) Decimal cosh(Decimal number) 命令说明如下: 该函数用于计算number的双曲余弦函数。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后,参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,返回null。 COT 命令格式如下: Double cot(Double number) Decimal cot(Decimal number) 命令说明如下: 该函数用于计算number的余切函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 EXP 命令格式如下: Double exp(Double number) Decimal exp(Decimal number) 命令说明如下: 该函数用于计算number的指数函数。 返回值: 返回number的指数值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 FLOOR 命令格式如下: Bigint floor(Double number) Bigint floor(Decimal number) 命令说明如下: 向下取整,函数返回不大于number的最大整数值。 参数说明: number:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Bigint类型。若number为null,则返回null。 示例如下: floor(1.2)=1 floor(1.9)=1 floor(0.1)=0 floor(-1.2)=-2 floor(-0.1)=-1 floor(0.0)=0 floor(-0.0)=0 LN 命令格式如下: Double ln(Double number) Decimal ln(Decimal number) 命令说明如下: 该函数用于返回number的自然对数。 参数说明: number:Double类型或Decimal类型。 若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 若number为null,则返回null。若number为负数或零,则执行报错。 返回值: 返回Double类型或Decimal类型。 LOG 命令格式如下: Double log(Double base, Double x) Decimal log(Decimal base, Decimal x) 命令说明如下: 该函数用于返回以base为底的x的对数。 参数说明: base:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 x:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型的对数值。 若base和x中存在null,则返回null。 若base和x中某一个值为负数或 0,会引发异常。 若base为1(会引发一个除零行为),也会引发异常。 POW 命令格式如下: Double pow(Double x, Double y) Decimal pow(Decimal x, Decimal y) 命令说明如下: 该函数用于返回x的y次方,即x^y。 参数说明: X:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 Y:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若x或y为null,则返回null。 RAND 命令格式如下: Double rand(Bigint seed) 命令说明如下: 该函数以seed为种子,返回Double类型的随机数,返回值区间是的0~1。 参数说明: seed:可选参数,Bigint类型,随机数种子,决定随机数序列的起始值。 返回值: 返回Double类型。 示例如下: select rand() from dual; select rand(1) from dual; ROUND 命令格式如下: Double round(Double number, [Bigint Decimal_places]) Decimal round(Decimal number, [Bigint Decimal_places]) 命令说明如下: 该函数四舍五入到指定小数点位置。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 Decimal_place:Bigint类型常量,四舍五入计算到小数点后的位置,其他类型参数会引发异常。如果省略表示四舍五入到个位数,默认值为0。 返回值: 返回Double类型或Decimal类型。若number或Decimal_places为null,则返回null。 说明 Decimal_places可以是负数。负数会从小数点向左开始计数,并且不保留小数部分。如果Decimal_places超过了整数部分长度,返回0。 示例如下: round(125.315)=125.0 round(125.315, 0)=125.0 round(125.315, 1)=125.3 round(125.315, 2)=125.32 round(125.315, 3)=125.315 round(-125.315, 2)=-125.32 round(123.345, -2)=100.0 round(null)=null round(123.345, 4)=123.345 round(123.345, -4)=0.0 SIN 命令格式如下所示: Double sin(Double number) Decimal sin(Decimal number) 命令说明如下: 该函数用于计算number的正弦函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 SINH 命令格式如下: Double sinh(Double number) Decimal sinh(Decimal number) 命令说明如下: 该函数用于计算number的双曲正弦函数。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 SQRT 命令格式如下: Double sqrt(Double number) Decimal sqrt(Decimal number) 命令说明如下: 该函数用于计算number的平方根。 参数说明: number:Double类型或Decimal类型,必须大于0,小于0时引发异常。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 TAN 命令说明如下: Double tan(Double number) Decimal tan(Decimal number) 命令说明如下: 该函数用于计算number的正切函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 TANH 命令格式如下: Double tanh(Double number) Decimal tanh(Decimal number) 命令说明如下: 该函数用于计算number的双曲正切函数。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 TRUNC 命令格式如下: Double trunc(Double number[, Bigint Decimal_places]) Decimal trunc(Decimal number[, Bigint Decimal_places]) 命令说明如下: 该函数用于将输入值number截取到指定小数点位置。 参数说明: number:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 Decimal_places:Bigint类型常量,要截取到的小数点位置,其他类型参数会隐式转为Bigint,省略此参数时默认到截取到个位数。 返回值: 返回值类型为Double或Decimal类型。若number或Decimal_places为null,则返回null。 说明 返回Double类型时,返回的结果的显示可能不符合预期,如示例trunc(125.815, 1)(这个Double类型显示问题任何系统都存在)。 截取掉的部分补0。 Decimal_places可以是负数,负数会从小数点向左开始截取,并且不保留小数部分。如果Decimal_places超过了整数部分长度,则返回0。 示例如下: trunc(125.815)=125.0 trunc(125.815,0)=125.0 trunc(125.815,1)=125.80000000000001 trunc(125.815,2)=125.81 trunc(125.815,3)=125.815 trunc(-125.815,2)=-125.81 trunc(125.815,-1)=120.0 trunc(125.815,-2)=100.0 trunc(125.815,-3)=0.0 trunc(123.345,4)=123.345 trunc(123.345,-4)=0.0 MaxCompute2.0扩展函数 升级到MaxCompute2.0后,产品扩展部分数学函数,新函数若用到新数据类型时,在使用新函数的SQL前,需要加一个set语句: set odps.sql.type.system.odps2=true; 下文将为您详细介绍新扩展的函数。 LOG2 命令格式如下: Double log2(Double number) Double log2(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于以2为底,返回number的对数。 参数说明: number:Double或Decimal类型。 返回值: 返回Double类型。若输入为0或null,则返回null。 示例如下: log2(null)=null log2(0)=null log2(8)=3.0 LOG10 命令格式如下: Double log10(Double number) Double log10(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于以10为底,返回number的对数。 参数说明: number:Double或Decimal类型。 返回值: 返回Double类型。若输入为0或null,则返回null。 示例如下: log10(null)=null log10(0)=null log10(8)=0.9030899869919435 BIN 命令格式如下: String bin(Bigint number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回number的二进制代码表示。 参数说明: number:Bigint类型。 返回值: 返回String类型。若输入为0,返回0,输入为null,则返回null。 示例如下: bin(0)='0' bin(null)='null' bin(12)='1100' HEX 命令格式如下: String hex(Bigint number) String hex(String number) String hex(BINARY number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于将整数或字符转换为十六进制格式。 参数说明: number:如果number是Bigint类型,那么返回number的十六进制表示。如果变量是String类型,则返回该字符串的十六进制表示。 返回值: 返回String类型。若输入为0,返回0,输入为null,则返回异常。 示例如下: hex(0)=0 hex('abc')='616263' hex(17)='11' hex('17')='3137' hex(null)异常返回失败 说明 当输入参数为Binary类型时,请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 UNHEX 命令格式如下: BINARY unhex(String number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回十六进制字符串所代表的字符串。 参数说明: number:为十六进制字符串。 返回值: 返回Binary类型,若输入0,返回失败,若输入为null,则返回null。 示例如下: unhex('616263')='abc' unhex(616263)='abc' RADIANS 命令格式如下: Double radians(Double number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于将角度转换为弧度。 参数说明: number:Double类型数据。 返回值: 返回Double类型,若输入为null,返回null。 示例如下: radians(90)=1.5707963267948966 radians(0)=0.0 radians(null)=null DEGREES 命令格式如下: Double degrees(Double number) Double degrees(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于将弧度转换为角度。 参数说明: number:Double或Decimal类型数据。 返回值: 返回Double类型,若输入null,则返回null。 示例如下: degrees(1.5707963267948966)=90.0 degrees(0)=0.0 degrees(null)=null SIGN 命令格式如下: Double sign(Double number) Double sign(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于取输入数据的符号,1.0表示正,-1.0表示负,否则0.0。 参数说明: number:Double或Decimal类型数据。 返回值: 返回Double类型,若输入0,则返回0.0,输入为null,则返回null。 示例如下: sign(-2.5)=-1.0 sign(2.5)=1.0 sign(0)=0.0 sign(null)=null E 命令格式如下: Double e() 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回e的值。 返回值: 返回Double类型。 示例如下: e()=2.718281828459045 PI 命令格式如下: Double pi() 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回π的值。 返回值: 返回Double类型。 示例如下: pi()=3.141592653589793 FACTORIAL 命令格式如下: Bigint factorial(Int number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回number的阶乘。 参数说明: number:Int类型数据,且在[0..20]之间。 返回值: 返回Bigint类型,输入为0,则返回1,输入为null或[0..20]之外的值,返回null。 示例如下: factorial(5)=120 --5!=5*4*3*2*1=120 CBRT 命令格式如下: Double cbrt(Double number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于计算number的立方根。 参数说明: number:Double类型数据。 返回值: 返回Double类型,输入为null,返回null。 示例如下: cbrt(8)=2 cbrt(null)=null SHIFTLEFT 命令格式如下: Int shiftleft(Tinyint|Smallint|Int number1, Int number2) Bigint shiftleft(Bigint number1, Int number2) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于按位左移(<<)。 参数说明: number1:Tinyint|Smallint|Int|Bigint整型数据。 number2:Int整型数据。 返回值: 返回Int或Bingint类型。 示例如下: shiftleft(1,2)=4 --1的二进制左移2位(1<<2,0001左移两位是0100) shiftleft(4,3)=32 --4的二进制左移3位(4<<3,0100左移3位是100000) SHIFTRIGHT 命令格式如下: Int shiftright(Tinyint|Smallint|Int number1, Int number2) Bigint shiftright(Bigint number1, Int number2) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于按位右移(>>)。 参数说明: number1:Tinyint|Smallint|Int|Bigint整型数据。 number2:Int整型数据。 返回值: 返回Int或Bigint类型。 示例如下: shiftright(4,2)=1 -- 4的二进制右移2位(4>>2,0100右移两位是0001) shiftright(32,3)=4 -- 32的二进制右移3位(32>>3,100000右移3位是0100) SHIFTRIGHTUNSIGNED 命令格式如下: Int shiftrightunsigned(Tinyint|Smallint|Int number1, Int number2) Bigint shiftrightunsigned(Bigint number1, Int number2) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于无符号按位右移(>>>)。 参数说明: number1:Tinyint|Smallint|Int|Bigint整型数据。 number2:Int整型数据。 返回值: 返回Int或Bigint类型。 示例如下: shiftrightunsigned(8,2)=2 --8的二进制无符号右移2位(8>>>2,1000右移两位是0010) shiftrightunsigned(-14,2)=1073741820 -- -14的二进制右移2位(-14>>>2, 11111111 11111111 11111111 11110010右移2位是 00111111 11111111 11111111 11111100)

2019-12-01 23:10:58 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 ABS 命令格式如下: Double abs(Double number) Bigint abs(Bigint number) Decimal abs(Decimal number) 命令说明如下: 该函数用于返回number的绝对值。 参数说明: number:当number为Double、Bigint或Decimal类型时。 输入为Bigint,返回Bigint。 输入为Double,返回Double类型。 输入为Decimal,返回Decimal类型。 若输入为String类型,会隐式转换为Double类型后参与运算,其它类型抛异常。 返回值: 返回Double、Bigint或Decimal类型,取决于输入参数的类型。若输入为null,则返回null。 说明 当输入Bigint类型的值超过Bigint的最大表示范围时,会返回Double类型,这种情况下可能会损失精度。 示例如下: abs(null)=null abs(-1)=1 abs(-1.2)=1.2 abs("-2")=2.0 abs(122320837456298376592387456923748)=1.2232083745629837e32 下面是一个完整的ABS函数在SQL中使用的示例,其他内建函数(除窗口函数、聚合函数外)的使用方式与其类似,不再举例。 select abs(id) from tbl1; -- 取tbl1表内id字段的绝对值 ACOS 命令格式如下: Double acos(Double number) Decimal acos(Decimal number) 命令说明如下: 该函数用于计算number的反余弦函数。 参数说明: number:Double类型或Decimal类型,-1 ≤ number ≤1。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型,值域在0 ~ π之间。若number为null,则返回null。 示例如下: acos("0.87")=0.5155940062460905 acos(0)=1.5707963267948966 ASIN 命令格式如下: Double asin(Double number) Decimal asin(Decimal number) 命令说明如下: 该函数用于计算number的反正弦函数。 参数说明: number:Double类型或Decimal类型,-1 ≤ number ≤1。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型,值域在-π/2 ~π/2之间。若number为null,返回null。 示例如下: asin(1)=1.5707963267948966 asin(-1)=-1.5707963267948966 ATAN 命令格式如下: Double atan(Double number) 命令说明如下: 该函数用于计算number的反正切函数。 参数说明: number:Double类型,若输入为String类型或Bigint类型,会隐式转换到Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型,值域在-π/2~π/2之间。若number为null,则返回null。 示例如下: atan(1)=0.7853981633974483 atan(-1)=-0.7853981633974483 CEIL 命令格式如下: Bigint ceil(Double value) Bigint ceil(Decimal value) 命令说明如下: 向上取整,函数返回不小于输入值value的最小整数。 参数说明: value:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换到Double类型后参与运算,其他类型抛异常。 返回值: 返回Bigint类型。任意一个参数输入为null,则返回null。 示例如下: ceil(1.1)=2 ceil(-1.1)=-1 CONV 命令格式如下: String conv(String input, Bigint from_base, Bigint to_base) 命令说明如下: 该函数为进制转换函数。 参数说明: input:以String表示的要转换的整数值,接受Bigint、Double的隐式转换。 from_base、to_base:以十进制表示的进制的值,可接受的的值为2、8、10和16。接受String及Double的隐式转换。 返回值: 返回String类型。任意一个参数输入为null,返回null。转换过程以64位精度工作,溢出时报异常。输入如果是负值,即以(-)开头,报异常。如果输入的是小数,则会转为整数值后进行进制转换,小数部分会被舍弃。 示例如下: conv('1100', 2, 10)='12' conv('1100', 2, 16)='c' conv('ab', 16, 10)='171' conv('ab', 16, 16)='ab' COS 命令格式如下: Double cos(Double number) Decimal cos(Decimal number) 命令说明如下: 该函数用于计算number的余弦函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换到Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 示例如下: cos(3.1415926/2)=2.6794896585028633e-8 cos(3.1415926)=-0.9999999999999986 COSH 命令格式如下: Double cosh(Double number) Decimal cosh(Decimal number) 命令说明如下: 该函数用于计算number的双曲余弦函数。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后,参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,返回null。 COT 命令格式如下: Double cot(Double number) Decimal cot(Decimal number) 命令说明如下: 该函数用于计算number的余切函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 EXP 命令格式如下: Double exp(Double number) Decimal exp(Decimal number) 命令说明如下: 该函数用于计算number的指数函数。 返回值: 返回number的指数值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 FLOOR 命令格式如下: Bigint floor(Double number) Bigint floor(Decimal number) 命令说明如下: 向下取整,函数返回不大于number的最大整数值。 参数说明: number:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Bigint类型。若number为null,则返回null。 示例如下: floor(1.2)=1 floor(1.9)=1 floor(0.1)=0 floor(-1.2)=-2 floor(-0.1)=-1 floor(0.0)=0 floor(-0.0)=0 LN 命令格式如下: Double ln(Double number) Decimal ln(Decimal number) 命令说明如下: 该函数用于返回number的自然对数。 参数说明: number:Double类型或Decimal类型。 若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 若number为null,则返回null。若number为负数或零,则执行报错。 返回值: 返回Double类型或Decimal类型。 LOG 命令格式如下: Double log(Double base, Double x) Decimal log(Decimal base, Decimal x) 命令说明如下: 该函数用于返回以base为底的x的对数。 参数说明: base:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 x:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型的对数值。 若base和x中存在null,则返回null。 若base和x中某一个值为负数或 0,会引发异常。 若base为1(会引发一个除零行为),也会引发异常。 POW 命令格式如下: Double pow(Double x, Double y) Decimal pow(Decimal x, Decimal y) 命令说明如下: 该函数用于返回x的y次方,即x^y。 参数说明: X:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 Y:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若x或y为null,则返回null。 RAND 命令格式如下: Double rand(Bigint seed) 命令说明如下: 该函数以seed为种子,返回Double类型的随机数,返回值区间是的0~1。 参数说明: seed:可选参数,Bigint类型,随机数种子,决定随机数序列的起始值。 返回值: 返回Double类型。 示例如下: select rand() from dual; select rand(1) from dual; ROUND 命令格式如下: Double round(Double number, [Bigint Decimal_places]) Decimal round(Decimal number, [Bigint Decimal_places]) 命令说明如下: 该函数四舍五入到指定小数点位置。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 Decimal_place:Bigint类型常量,四舍五入计算到小数点后的位置,其他类型参数会引发异常。如果省略表示四舍五入到个位数,默认值为0。 返回值: 返回Double类型或Decimal类型。若number或Decimal_places为null,则返回null。 说明 Decimal_places可以是负数。负数会从小数点向左开始计数,并且不保留小数部分。如果Decimal_places超过了整数部分长度,返回0。 示例如下: round(125.315)=125.0 round(125.315, 0)=125.0 round(125.315, 1)=125.3 round(125.315, 2)=125.32 round(125.315, 3)=125.315 round(-125.315, 2)=-125.32 round(123.345, -2)=100.0 round(null)=null round(123.345, 4)=123.345 round(123.345, -4)=0.0 SIN 命令格式如下所示: Double sin(Double number) Decimal sin(Decimal number) 命令说明如下: 该函数用于计算number的正弦函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 SINH 命令格式如下: Double sinh(Double number) Decimal sinh(Decimal number) 命令说明如下: 该函数用于计算number的双曲正弦函数。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 SQRT 命令格式如下: Double sqrt(Double number) Decimal sqrt(Decimal number) 命令说明如下: 该函数用于计算number的平方根。 参数说明: number:Double类型或Decimal类型,必须大于0,小于0时引发异常。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 TAN 命令说明如下: Double tan(Double number) Decimal tan(Decimal number) 命令说明如下: 该函数用于计算number的正切函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 TANH 命令格式如下: Double tanh(Double number) Decimal tanh(Decimal number) 命令说明如下: 该函数用于计算number的双曲正切函数。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 TRUNC 命令格式如下: Double trunc(Double number[, Bigint Decimal_places]) Decimal trunc(Decimal number[, Bigint Decimal_places]) 命令说明如下: 该函数用于将输入值number截取到指定小数点位置。 参数说明: number:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 Decimal_places:Bigint类型常量,要截取到的小数点位置,其他类型参数会隐式转为Bigint,省略此参数时默认到截取到个位数。 返回值: 返回值类型为Double或Decimal类型。若number或Decimal_places为null,则返回null。 说明 返回Double类型时,返回的结果的显示可能不符合预期,如示例trunc(125.815, 1)(这个Double类型显示问题任何系统都存在)。 截取掉的部分补0。 Decimal_places可以是负数,负数会从小数点向左开始截取,并且不保留小数部分。如果Decimal_places超过了整数部分长度,则返回0。 示例如下: trunc(125.815)=125.0 trunc(125.815,0)=125.0 trunc(125.815,1)=125.80000000000001 trunc(125.815,2)=125.81 trunc(125.815,3)=125.815 trunc(-125.815,2)=-125.81 trunc(125.815,-1)=120.0 trunc(125.815,-2)=100.0 trunc(125.815,-3)=0.0 trunc(123.345,4)=123.345 trunc(123.345,-4)=0.0 MaxCompute2.0扩展函数 升级到MaxCompute2.0后,产品扩展部分数学函数,新函数若用到新数据类型时,在使用新函数的SQL前,需要加一个set语句: set odps.sql.type.system.odps2=true; 下文将为您详细介绍新扩展的函数。 LOG2 命令格式如下: Double log2(Double number) Double log2(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于以2为底,返回number的对数。 参数说明: number:Double或Decimal类型。 返回值: 返回Double类型。若输入为0或null,则返回null。 示例如下: log2(null)=null log2(0)=null log2(8)=3.0 LOG10 命令格式如下: Double log10(Double number) Double log10(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于以10为底,返回number的对数。 参数说明: number:Double或Decimal类型。 返回值: 返回Double类型。若输入为0或null,则返回null。 示例如下: log10(null)=null log10(0)=null log10(8)=0.9030899869919435 BIN 命令格式如下: String bin(Bigint number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回number的二进制代码表示。 参数说明: number:Bigint类型。 返回值: 返回String类型。若输入为0,返回0,输入为null,则返回null。 示例如下: bin(0)='0' bin(null)='null' bin(12)='1100' HEX 命令格式如下: String hex(Bigint number) String hex(String number) String hex(BINARY number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于将整数或字符转换为十六进制格式。 参数说明: number:如果number是Bigint类型,那么返回number的十六进制表示。如果变量是String类型,则返回该字符串的十六进制表示。 返回值: 返回String类型。若输入为0,返回0,输入为null,则返回异常。 示例如下: hex(0)=0 hex('abc')='616263' hex(17)='11' hex('17')='3137' hex(null)异常返回失败 说明 当输入参数为Binary类型时,请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 UNHEX 命令格式如下: BINARY unhex(String number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回十六进制字符串所代表的字符串。 参数说明: number:为十六进制字符串。 返回值: 返回Binary类型,若输入0,返回失败,若输入为null,则返回null。 示例如下: unhex('616263')='abc' unhex(616263)='abc' RADIANS 命令格式如下: Double radians(Double number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于将角度转换为弧度。 参数说明: number:Double类型数据。 返回值: 返回Double类型,若输入为null,返回null。 示例如下: radians(90)=1.5707963267948966 radians(0)=0.0 radians(null)=null DEGREES 命令格式如下: Double degrees(Double number) Double degrees(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于将弧度转换为角度。 参数说明: number:Double或Decimal类型数据。 返回值: 返回Double类型,若输入null,则返回null。 示例如下: degrees(1.5707963267948966)=90.0 degrees(0)=0.0 degrees(null)=null SIGN 命令格式如下: Double sign(Double number) Double sign(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于取输入数据的符号,1.0表示正,-1.0表示负,否则0.0。 参数说明: number:Double或Decimal类型数据。 返回值: 返回Double类型,若输入0,则返回0.0,输入为null,则返回null。 示例如下: sign(-2.5)=-1.0 sign(2.5)=1.0 sign(0)=0.0 sign(null)=null E 命令格式如下: Double e() 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回e的值。 返回值: 返回Double类型。 示例如下: e()=2.718281828459045 PI 命令格式如下: Double pi() 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回π的值。 返回值: 返回Double类型。 示例如下: pi()=3.141592653589793 FACTORIAL 命令格式如下: Bigint factorial(Int number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回number的阶乘。 参数说明: number:Int类型数据,且在[0..20]之间。 返回值: 返回Bigint类型,输入为0,则返回1,输入为null或[0..20]之外的值,返回null。 示例如下: factorial(5)=120 --5!=5*4*3*2*1=120 CBRT 命令格式如下: Double cbrt(Double number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于计算number的立方根。 参数说明: number:Double类型数据。 返回值: 返回Double类型,输入为null,返回null。 示例如下: cbrt(8)=2 cbrt(null)=null SHIFTLEFT 命令格式如下: Int shiftleft(Tinyint|Smallint|Int number1, Int number2) Bigint shiftleft(Bigint number1, Int number2) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于按位左移(<<)。 参数说明: number1:Tinyint|Smallint|Int|Bigint整型数据。 number2:Int整型数据。 返回值: 返回Int或Bingint类型。 示例如下: shiftleft(1,2)=4 --1的二进制左移2位(1<<2,0001左移两位是0100) shiftleft(4,3)=32 --4的二进制左移3位(4<<3,0100左移3位是100000) SHIFTRIGHT 命令格式如下: Int shiftright(Tinyint|Smallint|Int number1, Int number2) Bigint shiftright(Bigint number1, Int number2) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于按位右移(>>)。 参数说明: number1:Tinyint|Smallint|Int|Bigint整型数据。 number2:Int整型数据。 返回值: 返回Int或Bigint类型。 示例如下: shiftright(4,2)=1 -- 4的二进制右移2位(4>>2,0100右移两位是0001) shiftright(32,3)=4 -- 32的二进制右移3位(32>>3,100000右移3位是0100) SHIFTRIGHTUNSIGNED 命令格式如下: Int shiftrightunsigned(Tinyint|Smallint|Int number1, Int number2) Bigint shiftrightunsigned(Bigint number1, Int number2) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于无符号按位右移(>>>)。 参数说明: number1:Tinyint|Smallint|Int|Bigint整型数据。 number2:Int整型数据。 返回值: 返回Int或Bigint类型。 示例如下: shiftrightunsigned(8,2)=2 --8的二进制无符号右移2位(8>>>2,1000右移两位是0010) shiftrightunsigned(-14,2)=1073741820 -- -14的二进制右移2位(-14>>>2, 11111111 11111111 11111111 11110010右移2位是 00111111 11111111 11111111 11111100)

2019-12-01 23:10:59 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 ABS 命令格式如下: Double abs(Double number) Bigint abs(Bigint number) Decimal abs(Decimal number) 命令说明如下: 该函数用于返回number的绝对值。 参数说明: number:当number为Double、Bigint或Decimal类型时。 输入为Bigint,返回Bigint。 输入为Double,返回Double类型。 输入为Decimal,返回Decimal类型。 若输入为String类型,会隐式转换为Double类型后参与运算,其它类型抛异常。 返回值: 返回Double、Bigint或Decimal类型,取决于输入参数的类型。若输入为null,则返回null。 说明 当输入Bigint类型的值超过Bigint的最大表示范围时,会返回Double类型,这种情况下可能会损失精度。 示例如下: abs(null)=null abs(-1)=1 abs(-1.2)=1.2 abs("-2")=2.0 abs(122320837456298376592387456923748)=1.2232083745629837e32 下面是一个完整的ABS函数在SQL中使用的示例,其他内建函数(除窗口函数、聚合函数外)的使用方式与其类似,不再举例。 select abs(id) from tbl1; -- 取tbl1表内id字段的绝对值 ACOS 命令格式如下: Double acos(Double number) Decimal acos(Decimal number) 命令说明如下: 该函数用于计算number的反余弦函数。 参数说明: number:Double类型或Decimal类型,-1 ≤ number ≤1。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型,值域在0 ~ π之间。若number为null,则返回null。 示例如下: acos("0.87")=0.5155940062460905 acos(0)=1.5707963267948966 ASIN 命令格式如下: Double asin(Double number) Decimal asin(Decimal number) 命令说明如下: 该函数用于计算number的反正弦函数。 参数说明: number:Double类型或Decimal类型,-1 ≤ number ≤1。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型,值域在-π/2 ~π/2之间。若number为null,返回null。 示例如下: asin(1)=1.5707963267948966 asin(-1)=-1.5707963267948966 ATAN 命令格式如下: Double atan(Double number) 命令说明如下: 该函数用于计算number的反正切函数。 参数说明: number:Double类型,若输入为String类型或Bigint类型,会隐式转换到Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型,值域在-π/2~π/2之间。若number为null,则返回null。 示例如下: atan(1)=0.7853981633974483 atan(-1)=-0.7853981633974483 CEIL 命令格式如下: Bigint ceil(Double value) Bigint ceil(Decimal value) 命令说明如下: 向上取整,函数返回不小于输入值value的最小整数。 参数说明: value:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换到Double类型后参与运算,其他类型抛异常。 返回值: 返回Bigint类型。任意一个参数输入为null,则返回null。 示例如下: ceil(1.1)=2 ceil(-1.1)=-1 CONV 命令格式如下: String conv(String input, Bigint from_base, Bigint to_base) 命令说明如下: 该函数为进制转换函数。 参数说明: input:以String表示的要转换的整数值,接受Bigint、Double的隐式转换。 from_base、to_base:以十进制表示的进制的值,可接受的的值为2、8、10和16。接受String及Double的隐式转换。 返回值: 返回String类型。任意一个参数输入为null,返回null。转换过程以64位精度工作,溢出时报异常。输入如果是负值,即以(-)开头,报异常。如果输入的是小数,则会转为整数值后进行进制转换,小数部分会被舍弃。 示例如下: conv('1100', 2, 10)='12' conv('1100', 2, 16)='c' conv('ab', 16, 10)='171' conv('ab', 16, 16)='ab' COS 命令格式如下: Double cos(Double number) Decimal cos(Decimal number) 命令说明如下: 该函数用于计算number的余弦函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换到Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 示例如下: cos(3.1415926/2)=2.6794896585028633e-8 cos(3.1415926)=-0.9999999999999986 COSH 命令格式如下: Double cosh(Double number) Decimal cosh(Decimal number) 命令说明如下: 该函数用于计算number的双曲余弦函数。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后,参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,返回null。 COT 命令格式如下: Double cot(Double number) Decimal cot(Decimal number) 命令说明如下: 该函数用于计算number的余切函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 EXP 命令格式如下: Double exp(Double number) Decimal exp(Decimal number) 命令说明如下: 该函数用于计算number的指数函数。 返回值: 返回number的指数值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 FLOOR 命令格式如下: Bigint floor(Double number) Bigint floor(Decimal number) 命令说明如下: 向下取整,函数返回不大于number的最大整数值。 参数说明: number:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Bigint类型。若number为null,则返回null。 示例如下: floor(1.2)=1 floor(1.9)=1 floor(0.1)=0 floor(-1.2)=-2 floor(-0.1)=-1 floor(0.0)=0 floor(-0.0)=0 LN 命令格式如下: Double ln(Double number) Decimal ln(Decimal number) 命令说明如下: 该函数用于返回number的自然对数。 参数说明: number:Double类型或Decimal类型。 若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 若number为null,则返回null。若number为负数或零,则执行报错。 返回值: 返回Double类型或Decimal类型。 LOG 命令格式如下: Double log(Double base, Double x) Decimal log(Decimal base, Decimal x) 命令说明如下: 该函数用于返回以base为底的x的对数。 参数说明: base:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 x:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型的对数值。 若base和x中存在null,则返回null。 若base和x中某一个值为负数或 0,会引发异常。 若base为1(会引发一个除零行为),也会引发异常。 POW 命令格式如下: Double pow(Double x, Double y) Decimal pow(Decimal x, Decimal y) 命令说明如下: 该函数用于返回x的y次方,即x^y。 参数说明: X:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 Y:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若x或y为null,则返回null。 RAND 命令格式如下: Double rand(Bigint seed) 命令说明如下: 该函数以seed为种子,返回Double类型的随机数,返回值区间是的0~1。 参数说明: seed:可选参数,Bigint类型,随机数种子,决定随机数序列的起始值。 返回值: 返回Double类型。 示例如下: select rand() from dual; select rand(1) from dual; ROUND 命令格式如下: Double round(Double number, [Bigint Decimal_places]) Decimal round(Decimal number, [Bigint Decimal_places]) 命令说明如下: 该函数四舍五入到指定小数点位置。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 Decimal_place:Bigint类型常量,四舍五入计算到小数点后的位置,其他类型参数会引发异常。如果省略表示四舍五入到个位数,默认值为0。 返回值: 返回Double类型或Decimal类型。若number或Decimal_places为null,则返回null。 说明 Decimal_places可以是负数。负数会从小数点向左开始计数,并且不保留小数部分。如果Decimal_places超过了整数部分长度,返回0。 示例如下: round(125.315)=125.0 round(125.315, 0)=125.0 round(125.315, 1)=125.3 round(125.315, 2)=125.32 round(125.315, 3)=125.315 round(-125.315, 2)=-125.32 round(123.345, -2)=100.0 round(null)=null round(123.345, 4)=123.345 round(123.345, -4)=0.0 SIN 命令格式如下所示: Double sin(Double number) Decimal sin(Decimal number) 命令说明如下: 该函数用于计算number的正弦函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 SINH 命令格式如下: Double sinh(Double number) Decimal sinh(Decimal number) 命令说明如下: 该函数用于计算number的双曲正弦函数。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 SQRT 命令格式如下: Double sqrt(Double number) Decimal sqrt(Decimal number) 命令说明如下: 该函数用于计算number的平方根。 参数说明: number:Double类型或Decimal类型,必须大于0,小于0时引发异常。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 TAN 命令说明如下: Double tan(Double number) Decimal tan(Decimal number) 命令说明如下: 该函数用于计算number的正切函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 TANH 命令格式如下: Double tanh(Double number) Decimal tanh(Decimal number) 命令说明如下: 该函数用于计算number的双曲正切函数。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 TRUNC 命令格式如下: Double trunc(Double number[, Bigint Decimal_places]) Decimal trunc(Decimal number[, Bigint Decimal_places]) 命令说明如下: 该函数用于将输入值number截取到指定小数点位置。 参数说明: number:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 Decimal_places:Bigint类型常量,要截取到的小数点位置,其他类型参数会隐式转为Bigint,省略此参数时默认到截取到个位数。 返回值: 返回值类型为Double或Decimal类型。若number或Decimal_places为null,则返回null。 说明 返回Double类型时,返回的结果的显示可能不符合预期,如示例trunc(125.815, 1)(这个Double类型显示问题任何系统都存在)。 截取掉的部分补0。 Decimal_places可以是负数,负数会从小数点向左开始截取,并且不保留小数部分。如果Decimal_places超过了整数部分长度,则返回0。 示例如下: trunc(125.815)=125.0 trunc(125.815,0)=125.0 trunc(125.815,1)=125.80000000000001 trunc(125.815,2)=125.81 trunc(125.815,3)=125.815 trunc(-125.815,2)=-125.81 trunc(125.815,-1)=120.0 trunc(125.815,-2)=100.0 trunc(125.815,-3)=0.0 trunc(123.345,4)=123.345 trunc(123.345,-4)=0.0 MaxCompute2.0扩展函数 升级到MaxCompute2.0后,产品扩展部分数学函数,新函数若用到新数据类型时,在使用新函数的SQL前,需要加一个set语句: set odps.sql.type.system.odps2=true; 下文将为您详细介绍新扩展的函数。 LOG2 命令格式如下: Double log2(Double number) Double log2(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于以2为底,返回number的对数。 参数说明: number:Double或Decimal类型。 返回值: 返回Double类型。若输入为0或null,则返回null。 示例如下: log2(null)=null log2(0)=null log2(8)=3.0 LOG10 命令格式如下: Double log10(Double number) Double log10(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于以10为底,返回number的对数。 参数说明: number:Double或Decimal类型。 返回值: 返回Double类型。若输入为0或null,则返回null。 示例如下: log10(null)=null log10(0)=null log10(8)=0.9030899869919435 BIN 命令格式如下: String bin(Bigint number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回number的二进制代码表示。 参数说明: number:Bigint类型。 返回值: 返回String类型。若输入为0,返回0,输入为null,则返回null。 示例如下: bin(0)='0' bin(null)='null' bin(12)='1100' HEX 命令格式如下: String hex(Bigint number) String hex(String number) String hex(BINARY number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于将整数或字符转换为十六进制格式。 参数说明: number:如果number是Bigint类型,那么返回number的十六进制表示。如果变量是String类型,则返回该字符串的十六进制表示。 返回值: 返回String类型。若输入为0,返回0,输入为null,则返回异常。 示例如下: hex(0)=0 hex('abc')='616263' hex(17)='11' hex('17')='3137' hex(null)异常返回失败 说明 当输入参数为Binary类型时,请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 UNHEX 命令格式如下: BINARY unhex(String number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回十六进制字符串所代表的字符串。 参数说明: number:为十六进制字符串。 返回值: 返回Binary类型,若输入0,返回失败,若输入为null,则返回null。 示例如下: unhex('616263')='abc' unhex(616263)='abc' RADIANS 命令格式如下: Double radians(Double number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于将角度转换为弧度。 参数说明: number:Double类型数据。 返回值: 返回Double类型,若输入为null,返回null。 示例如下: radians(90)=1.5707963267948966 radians(0)=0.0 radians(null)=null DEGREES 命令格式如下: Double degrees(Double number) Double degrees(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于将弧度转换为角度。 参数说明: number:Double或Decimal类型数据。 返回值: 返回Double类型,若输入null,则返回null。 示例如下: degrees(1.5707963267948966)=90.0 degrees(0)=0.0 degrees(null)=null SIGN 命令格式如下: Double sign(Double number) Double sign(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于取输入数据的符号,1.0表示正,-1.0表示负,否则0.0。 参数说明: number:Double或Decimal类型数据。 返回值: 返回Double类型,若输入0,则返回0.0,输入为null,则返回null。 示例如下: sign(-2.5)=-1.0 sign(2.5)=1.0 sign(0)=0.0 sign(null)=null E 命令格式如下: Double e() 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回e的值。 返回值: 返回Double类型。 示例如下: e()=2.718281828459045 PI 命令格式如下: Double pi() 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回π的值。 返回值: 返回Double类型。 示例如下: pi()=3.141592653589793 FACTORIAL 命令格式如下: Bigint factorial(Int number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回number的阶乘。 参数说明: number:Int类型数据,且在[0..20]之间。 返回值: 返回Bigint类型,输入为0,则返回1,输入为null或[0..20]之外的值,返回null。 示例如下: factorial(5)=120 --5!=5*4*3*2*1=120 CBRT 命令格式如下: Double cbrt(Double number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于计算number的立方根。 参数说明: number:Double类型数据。 返回值: 返回Double类型,输入为null,返回null。 示例如下: cbrt(8)=2 cbrt(null)=null SHIFTLEFT 命令格式如下: Int shiftleft(Tinyint|Smallint|Int number1, Int number2) Bigint shiftleft(Bigint number1, Int number2) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于按位左移(<<)。 参数说明: number1:Tinyint|Smallint|Int|Bigint整型数据。 number2:Int整型数据。 返回值: 返回Int或Bingint类型。 示例如下: shiftleft(1,2)=4 --1的二进制左移2位(1<<2,0001左移两位是0100) shiftleft(4,3)=32 --4的二进制左移3位(4<<3,0100左移3位是100000) SHIFTRIGHT 命令格式如下: Int shiftright(Tinyint|Smallint|Int number1, Int number2) Bigint shiftright(Bigint number1, Int number2) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于按位右移(>>)。 参数说明: number1:Tinyint|Smallint|Int|Bigint整型数据。 number2:Int整型数据。 返回值: 返回Int或Bigint类型。 示例如下: shiftright(4,2)=1 -- 4的二进制右移2位(4>>2,0100右移两位是0001) shiftright(32,3)=4 -- 32的二进制右移3位(32>>3,100000右移3位是0100) SHIFTRIGHTUNSIGNED 命令格式如下: Int shiftrightunsigned(Tinyint|Smallint|Int number1, Int number2) Bigint shiftrightunsigned(Bigint number1, Int number2) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于无符号按位右移(>>>)。 参数说明: number1:Tinyint|Smallint|Int|Bigint整型数据。 number2:Int整型数据。 返回值: 返回Int或Bigint类型。 示例如下: shiftrightunsigned(8,2)=2 --8的二进制无符号右移2位(8>>>2,1000右移两位是0010) shiftrightunsigned(-14,2)=1073741820 -- -14的二进制右移2位(-14>>>2, 11111111 11111111 11111111 11110010右移2位是 00111111 11111111 11111111 11111100)

2019-12-01 23:10:58 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 ABS 命令格式如下: Double abs(Double number) Bigint abs(Bigint number) Decimal abs(Decimal number) 命令说明如下: 该函数用于返回number的绝对值。 参数说明: number:当number为Double、Bigint或Decimal类型时。 输入为Bigint,返回Bigint。 输入为Double,返回Double类型。 输入为Decimal,返回Decimal类型。 若输入为String类型,会隐式转换为Double类型后参与运算,其它类型抛异常。 返回值: 返回Double、Bigint或Decimal类型,取决于输入参数的类型。若输入为null,则返回null。 说明 当输入Bigint类型的值超过Bigint的最大表示范围时,会返回Double类型,这种情况下可能会损失精度。 示例如下: abs(null)=null abs(-1)=1 abs(-1.2)=1.2 abs("-2")=2.0 abs(122320837456298376592387456923748)=1.2232083745629837e32 下面是一个完整的ABS函数在SQL中使用的示例,其他内建函数(除窗口函数、聚合函数外)的使用方式与其类似,不再举例。 select abs(id) from tbl1; -- 取tbl1表内id字段的绝对值 ACOS 命令格式如下: Double acos(Double number) Decimal acos(Decimal number) 命令说明如下: 该函数用于计算number的反余弦函数。 参数说明: number:Double类型或Decimal类型,-1 ≤ number ≤1。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型,值域在0 ~ π之间。若number为null,则返回null。 示例如下: acos("0.87")=0.5155940062460905 acos(0)=1.5707963267948966 ASIN 命令格式如下: Double asin(Double number) Decimal asin(Decimal number) 命令说明如下: 该函数用于计算number的反正弦函数。 参数说明: number:Double类型或Decimal类型,-1 ≤ number ≤1。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型,值域在-π/2 ~π/2之间。若number为null,返回null。 示例如下: asin(1)=1.5707963267948966 asin(-1)=-1.5707963267948966 ATAN 命令格式如下: Double atan(Double number) 命令说明如下: 该函数用于计算number的反正切函数。 参数说明: number:Double类型,若输入为String类型或Bigint类型,会隐式转换到Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型,值域在-π/2~π/2之间。若number为null,则返回null。 示例如下: atan(1)=0.7853981633974483 atan(-1)=-0.7853981633974483 CEIL 命令格式如下: Bigint ceil(Double value) Bigint ceil(Decimal value) 命令说明如下: 向上取整,函数返回不小于输入值value的最小整数。 参数说明: value:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换到Double类型后参与运算,其他类型抛异常。 返回值: 返回Bigint类型。任意一个参数输入为null,则返回null。 示例如下: ceil(1.1)=2 ceil(-1.1)=-1 CONV 命令格式如下: String conv(String input, Bigint from_base, Bigint to_base) 命令说明如下: 该函数为进制转换函数。 参数说明: input:以String表示的要转换的整数值,接受Bigint、Double的隐式转换。 from_base、to_base:以十进制表示的进制的值,可接受的的值为2、8、10和16。接受String及Double的隐式转换。 返回值: 返回String类型。任意一个参数输入为null,返回null。转换过程以64位精度工作,溢出时报异常。输入如果是负值,即以(-)开头,报异常。如果输入的是小数,则会转为整数值后进行进制转换,小数部分会被舍弃。 示例如下: conv('1100', 2, 10)='12' conv('1100', 2, 16)='c' conv('ab', 16, 10)='171' conv('ab', 16, 16)='ab' COS 命令格式如下: Double cos(Double number) Decimal cos(Decimal number) 命令说明如下: 该函数用于计算number的余弦函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换到Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 示例如下: cos(3.1415926/2)=2.6794896585028633e-8 cos(3.1415926)=-0.9999999999999986 COSH 命令格式如下: Double cosh(Double number) Decimal cosh(Decimal number) 命令说明如下: 该函数用于计算number的双曲余弦函数。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后,参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,返回null。 COT 命令格式如下: Double cot(Double number) Decimal cot(Decimal number) 命令说明如下: 该函数用于计算number的余切函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 EXP 命令格式如下: Double exp(Double number) Decimal exp(Decimal number) 命令说明如下: 该函数用于计算number的指数函数。 返回值: 返回number的指数值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 FLOOR 命令格式如下: Bigint floor(Double number) Bigint floor(Decimal number) 命令说明如下: 向下取整,函数返回不大于number的最大整数值。 参数说明: number:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Bigint类型。若number为null,则返回null。 示例如下: floor(1.2)=1 floor(1.9)=1 floor(0.1)=0 floor(-1.2)=-2 floor(-0.1)=-1 floor(0.0)=0 floor(-0.0)=0 LN 命令格式如下: Double ln(Double number) Decimal ln(Decimal number) 命令说明如下: 该函数用于返回number的自然对数。 参数说明: number:Double类型或Decimal类型。 若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 若number为null,则返回null。若number为负数或零,则执行报错。 返回值: 返回Double类型或Decimal类型。 LOG 命令格式如下: Double log(Double base, Double x) Decimal log(Decimal base, Decimal x) 命令说明如下: 该函数用于返回以base为底的x的对数。 参数说明: base:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 x:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型的对数值。 若base和x中存在null,则返回null。 若base和x中某一个值为负数或 0,会引发异常。 若base为1(会引发一个除零行为),也会引发异常。 POW 命令格式如下: Double pow(Double x, Double y) Decimal pow(Decimal x, Decimal y) 命令说明如下: 该函数用于返回x的y次方,即x^y。 参数说明: X:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 Y:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若x或y为null,则返回null。 RAND 命令格式如下: Double rand(Bigint seed) 命令说明如下: 该函数以seed为种子,返回Double类型的随机数,返回值区间是的0~1。 参数说明: seed:可选参数,Bigint类型,随机数种子,决定随机数序列的起始值。 返回值: 返回Double类型。 示例如下: select rand() from dual; select rand(1) from dual; ROUND 命令格式如下: Double round(Double number, [Bigint Decimal_places]) Decimal round(Decimal number, [Bigint Decimal_places]) 命令说明如下: 该函数四舍五入到指定小数点位置。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 Decimal_place:Bigint类型常量,四舍五入计算到小数点后的位置,其他类型参数会引发异常。如果省略表示四舍五入到个位数,默认值为0。 返回值: 返回Double类型或Decimal类型。若number或Decimal_places为null,则返回null。 说明 Decimal_places可以是负数。负数会从小数点向左开始计数,并且不保留小数部分。如果Decimal_places超过了整数部分长度,返回0。 示例如下: round(125.315)=125.0 round(125.315, 0)=125.0 round(125.315, 1)=125.3 round(125.315, 2)=125.32 round(125.315, 3)=125.315 round(-125.315, 2)=-125.32 round(123.345, -2)=100.0 round(null)=null round(123.345, 4)=123.345 round(123.345, -4)=0.0 SIN 命令格式如下所示: Double sin(Double number) Decimal sin(Decimal number) 命令说明如下: 该函数用于计算number的正弦函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 SINH 命令格式如下: Double sinh(Double number) Decimal sinh(Decimal number) 命令说明如下: 该函数用于计算number的双曲正弦函数。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 SQRT 命令格式如下: Double sqrt(Double number) Decimal sqrt(Decimal number) 命令说明如下: 该函数用于计算number的平方根。 参数说明: number:Double类型或Decimal类型,必须大于0,小于0时引发异常。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 TAN 命令说明如下: Double tan(Double number) Decimal tan(Decimal number) 命令说明如下: 该函数用于计算number的正切函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 TANH 命令格式如下: Double tanh(Double number) Decimal tanh(Decimal number) 命令说明如下: 该函数用于计算number的双曲正切函数。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 TRUNC 命令格式如下: Double trunc(Double number[, Bigint Decimal_places]) Decimal trunc(Decimal number[, Bigint Decimal_places]) 命令说明如下: 该函数用于将输入值number截取到指定小数点位置。 参数说明: number:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 Decimal_places:Bigint类型常量,要截取到的小数点位置,其他类型参数会隐式转为Bigint,省略此参数时默认到截取到个位数。 返回值: 返回值类型为Double或Decimal类型。若number或Decimal_places为null,则返回null。 说明 返回Double类型时,返回的结果的显示可能不符合预期,如示例trunc(125.815, 1)(这个Double类型显示问题任何系统都存在)。 截取掉的部分补0。 Decimal_places可以是负数,负数会从小数点向左开始截取,并且不保留小数部分。如果Decimal_places超过了整数部分长度,则返回0。 示例如下: trunc(125.815)=125.0 trunc(125.815,0)=125.0 trunc(125.815,1)=125.80000000000001 trunc(125.815,2)=125.81 trunc(125.815,3)=125.815 trunc(-125.815,2)=-125.81 trunc(125.815,-1)=120.0 trunc(125.815,-2)=100.0 trunc(125.815,-3)=0.0 trunc(123.345,4)=123.345 trunc(123.345,-4)=0.0 MaxCompute2.0扩展函数 升级到MaxCompute2.0后,产品扩展部分数学函数,新函数若用到新数据类型时,在使用新函数的SQL前,需要加一个set语句: set odps.sql.type.system.odps2=true; 下文将为您详细介绍新扩展的函数。 LOG2 命令格式如下: Double log2(Double number) Double log2(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于以2为底,返回number的对数。 参数说明: number:Double或Decimal类型。 返回值: 返回Double类型。若输入为0或null,则返回null。 示例如下: log2(null)=null log2(0)=null log2(8)=3.0 LOG10 命令格式如下: Double log10(Double number) Double log10(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于以10为底,返回number的对数。 参数说明: number:Double或Decimal类型。 返回值: 返回Double类型。若输入为0或null,则返回null。 示例如下: log10(null)=null log10(0)=null log10(8)=0.9030899869919435 BIN 命令格式如下: String bin(Bigint number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回number的二进制代码表示。 参数说明: number:Bigint类型。 返回值: 返回String类型。若输入为0,返回0,输入为null,则返回null。 示例如下: bin(0)='0' bin(null)='null' bin(12)='1100' HEX 命令格式如下: String hex(Bigint number) String hex(String number) String hex(BINARY number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于将整数或字符转换为十六进制格式。 参数说明: number:如果number是Bigint类型,那么返回number的十六进制表示。如果变量是String类型,则返回该字符串的十六进制表示。 返回值: 返回String类型。若输入为0,返回0,输入为null,则返回异常。 示例如下: hex(0)=0 hex('abc')='616263' hex(17)='11' hex('17')='3137' hex(null)异常返回失败 说明 当输入参数为Binary类型时,请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 UNHEX 命令格式如下: BINARY unhex(String number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回十六进制字符串所代表的字符串。 参数说明: number:为十六进制字符串。 返回值: 返回Binary类型,若输入0,返回失败,若输入为null,则返回null。 示例如下: unhex('616263')='abc' unhex(616263)='abc' RADIANS 命令格式如下: Double radians(Double number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于将角度转换为弧度。 参数说明: number:Double类型数据。 返回值: 返回Double类型,若输入为null,返回null。 示例如下: radians(90)=1.5707963267948966 radians(0)=0.0 radians(null)=null DEGREES 命令格式如下: Double degrees(Double number) Double degrees(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于将弧度转换为角度。 参数说明: number:Double或Decimal类型数据。 返回值: 返回Double类型,若输入null,则返回null。 示例如下: degrees(1.5707963267948966)=90.0 degrees(0)=0.0 degrees(null)=null SIGN 命令格式如下: Double sign(Double number) Double sign(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于取输入数据的符号,1.0表示正,-1.0表示负,否则0.0。 参数说明: number:Double或Decimal类型数据。 返回值: 返回Double类型,若输入0,则返回0.0,输入为null,则返回null。 示例如下: sign(-2.5)=-1.0 sign(2.5)=1.0 sign(0)=0.0 sign(null)=null E 命令格式如下: Double e() 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回e的值。 返回值: 返回Double类型。 示例如下: e()=2.718281828459045 PI 命令格式如下: Double pi() 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回π的值。 返回值: 返回Double类型。 示例如下: pi()=3.141592653589793 FACTORIAL 命令格式如下: Bigint factorial(Int number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回number的阶乘。 参数说明: number:Int类型数据,且在[0..20]之间。 返回值: 返回Bigint类型,输入为0,则返回1,输入为null或[0..20]之外的值,返回null。 示例如下: factorial(5)=120 --5!=5*4*3*2*1=120 CBRT 命令格式如下: Double cbrt(Double number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于计算number的立方根。 参数说明: number:Double类型数据。 返回值: 返回Double类型,输入为null,返回null。 示例如下: cbrt(8)=2 cbrt(null)=null SHIFTLEFT 命令格式如下: Int shiftleft(Tinyint|Smallint|Int number1, Int number2) Bigint shiftleft(Bigint number1, Int number2) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于按位左移(<<)。 参数说明: number1:Tinyint|Smallint|Int|Bigint整型数据。 number2:Int整型数据。 返回值: 返回Int或Bingint类型。 示例如下: shiftleft(1,2)=4 --1的二进制左移2位(1<<2,0001左移两位是0100) shiftleft(4,3)=32 --4的二进制左移3位(4<<3,0100左移3位是100000) SHIFTRIGHT 命令格式如下: Int shiftright(Tinyint|Smallint|Int number1, Int number2) Bigint shiftright(Bigint number1, Int number2) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于按位右移(>>)。 参数说明: number1:Tinyint|Smallint|Int|Bigint整型数据。 number2:Int整型数据。 返回值: 返回Int或Bigint类型。 示例如下: shiftright(4,2)=1 -- 4的二进制右移2位(4>>2,0100右移两位是0001) shiftright(32,3)=4 -- 32的二进制右移3位(32>>3,100000右移3位是0100) SHIFTRIGHTUNSIGNED 命令格式如下: Int shiftrightunsigned(Tinyint|Smallint|Int number1, Int number2) Bigint shiftrightunsigned(Bigint number1, Int number2) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于无符号按位右移(>>>)。 参数说明: number1:Tinyint|Smallint|Int|Bigint整型数据。 number2:Int整型数据。 返回值: 返回Int或Bigint类型。 示例如下: shiftrightunsigned(8,2)=2 --8的二进制无符号右移2位(8>>>2,1000右移两位是0010) shiftrightunsigned(-14,2)=1073741820 -- -14的二进制右移2位(-14>>>2, 11111111 11111111 11111111 11110010右移2位是 00111111 11111111 11111111 11111100)

2019-12-01 23:10:59 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 ABS 命令格式如下: Double abs(Double number) Bigint abs(Bigint number) Decimal abs(Decimal number) 命令说明如下: 该函数用于返回number的绝对值。 参数说明: number:当number为Double、Bigint或Decimal类型时。 输入为Bigint,返回Bigint。 输入为Double,返回Double类型。 输入为Decimal,返回Decimal类型。 若输入为String类型,会隐式转换为Double类型后参与运算,其它类型抛异常。 返回值: 返回Double、Bigint或Decimal类型,取决于输入参数的类型。若输入为null,则返回null。 说明 当输入Bigint类型的值超过Bigint的最大表示范围时,会返回Double类型,这种情况下可能会损失精度。 示例如下: abs(null)=null abs(-1)=1 abs(-1.2)=1.2 abs("-2")=2.0 abs(122320837456298376592387456923748)=1.2232083745629837e32 下面是一个完整的ABS函数在SQL中使用的示例,其他内建函数(除窗口函数、聚合函数外)的使用方式与其类似,不再举例。 select abs(id) from tbl1; -- 取tbl1表内id字段的绝对值 ACOS 命令格式如下: Double acos(Double number) Decimal acos(Decimal number) 命令说明如下: 该函数用于计算number的反余弦函数。 参数说明: number:Double类型或Decimal类型,-1 ≤ number ≤1。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型,值域在0 ~ π之间。若number为null,则返回null。 示例如下: acos("0.87")=0.5155940062460905 acos(0)=1.5707963267948966 ASIN 命令格式如下: Double asin(Double number) Decimal asin(Decimal number) 命令说明如下: 该函数用于计算number的反正弦函数。 参数说明: number:Double类型或Decimal类型,-1 ≤ number ≤1。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型,值域在-π/2 ~π/2之间。若number为null,返回null。 示例如下: asin(1)=1.5707963267948966 asin(-1)=-1.5707963267948966 ATAN 命令格式如下: Double atan(Double number) 命令说明如下: 该函数用于计算number的反正切函数。 参数说明: number:Double类型,若输入为String类型或Bigint类型,会隐式转换到Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型,值域在-π/2~π/2之间。若number为null,则返回null。 示例如下: atan(1)=0.7853981633974483 atan(-1)=-0.7853981633974483 CEIL 命令格式如下: Bigint ceil(Double value) Bigint ceil(Decimal value) 命令说明如下: 向上取整,函数返回不小于输入值value的最小整数。 参数说明: value:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换到Double类型后参与运算,其他类型抛异常。 返回值: 返回Bigint类型。任意一个参数输入为null,则返回null。 示例如下: ceil(1.1)=2 ceil(-1.1)=-1 CONV 命令格式如下: String conv(String input, Bigint from_base, Bigint to_base) 命令说明如下: 该函数为进制转换函数。 参数说明: input:以String表示的要转换的整数值,接受Bigint、Double的隐式转换。 from_base、to_base:以十进制表示的进制的值,可接受的的值为2、8、10和16。接受String及Double的隐式转换。 返回值: 返回String类型。任意一个参数输入为null,返回null。转换过程以64位精度工作,溢出时报异常。输入如果是负值,即以(-)开头,报异常。如果输入的是小数,则会转为整数值后进行进制转换,小数部分会被舍弃。 示例如下: conv('1100', 2, 10)='12' conv('1100', 2, 16)='c' conv('ab', 16, 10)='171' conv('ab', 16, 16)='ab' COS 命令格式如下: Double cos(Double number) Decimal cos(Decimal number) 命令说明如下: 该函数用于计算number的余弦函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换到Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 示例如下: cos(3.1415926/2)=2.6794896585028633e-8 cos(3.1415926)=-0.9999999999999986 COSH 命令格式如下: Double cosh(Double number) Decimal cosh(Decimal number) 命令说明如下: 该函数用于计算number的双曲余弦函数。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后,参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,返回null。 COT 命令格式如下: Double cot(Double number) Decimal cot(Decimal number) 命令说明如下: 该函数用于计算number的余切函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 EXP 命令格式如下: Double exp(Double number) Decimal exp(Decimal number) 命令说明如下: 该函数用于计算number的指数函数。 返回值: 返回number的指数值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 FLOOR 命令格式如下: Bigint floor(Double number) Bigint floor(Decimal number) 命令说明如下: 向下取整,函数返回不大于number的最大整数值。 参数说明: number:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Bigint类型。若number为null,则返回null。 示例如下: floor(1.2)=1 floor(1.9)=1 floor(0.1)=0 floor(-1.2)=-2 floor(-0.1)=-1 floor(0.0)=0 floor(-0.0)=0 LN 命令格式如下: Double ln(Double number) Decimal ln(Decimal number) 命令说明如下: 该函数用于返回number的自然对数。 参数说明: number:Double类型或Decimal类型。 若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 若number为null,则返回null。若number为负数或零,则执行报错。 返回值: 返回Double类型或Decimal类型。 LOG 命令格式如下: Double log(Double base, Double x) Decimal log(Decimal base, Decimal x) 命令说明如下: 该函数用于返回以base为底的x的对数。 参数说明: base:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 x:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型的对数值。 若base和x中存在null,则返回null。 若base和x中某一个值为负数或 0,会引发异常。 若base为1(会引发一个除零行为),也会引发异常。 POW 命令格式如下: Double pow(Double x, Double y) Decimal pow(Decimal x, Decimal y) 命令说明如下: 该函数用于返回x的y次方,即x^y。 参数说明: X:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 Y:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若x或y为null,则返回null。 RAND 命令格式如下: Double rand(Bigint seed) 命令说明如下: 该函数以seed为种子,返回Double类型的随机数,返回值区间是的0~1。 参数说明: seed:可选参数,Bigint类型,随机数种子,决定随机数序列的起始值。 返回值: 返回Double类型。 示例如下: select rand() from dual; select rand(1) from dual; ROUND 命令格式如下: Double round(Double number, [Bigint Decimal_places]) Decimal round(Decimal number, [Bigint Decimal_places]) 命令说明如下: 该函数四舍五入到指定小数点位置。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 Decimal_place:Bigint类型常量,四舍五入计算到小数点后的位置,其他类型参数会引发异常。如果省略表示四舍五入到个位数,默认值为0。 返回值: 返回Double类型或Decimal类型。若number或Decimal_places为null,则返回null。 说明 Decimal_places可以是负数。负数会从小数点向左开始计数,并且不保留小数部分。如果Decimal_places超过了整数部分长度,返回0。 示例如下: round(125.315)=125.0 round(125.315, 0)=125.0 round(125.315, 1)=125.3 round(125.315, 2)=125.32 round(125.315, 3)=125.315 round(-125.315, 2)=-125.32 round(123.345, -2)=100.0 round(null)=null round(123.345, 4)=123.345 round(123.345, -4)=0.0 SIN 命令格式如下所示: Double sin(Double number) Decimal sin(Decimal number) 命令说明如下: 该函数用于计算number的正弦函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 SINH 命令格式如下: Double sinh(Double number) Decimal sinh(Decimal number) 命令说明如下: 该函数用于计算number的双曲正弦函数。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 SQRT 命令格式如下: Double sqrt(Double number) Decimal sqrt(Decimal number) 命令说明如下: 该函数用于计算number的平方根。 参数说明: number:Double类型或Decimal类型,必须大于0,小于0时引发异常。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 TAN 命令说明如下: Double tan(Double number) Decimal tan(Decimal number) 命令说明如下: 该函数用于计算number的正切函数,输入为弧度值。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 TANH 命令格式如下: Double tanh(Double number) Decimal tanh(Decimal number) 命令说明如下: 该函数用于计算number的双曲正切函数。 参数说明: number:Double类型或Decimal类型。若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 返回值: 返回Double类型或Decimal类型。若number为null,则返回null。 TRUNC 命令格式如下: Double trunc(Double number[, Bigint Decimal_places]) Decimal trunc(Decimal number[, Bigint Decimal_places]) 命令说明如下: 该函数用于将输入值number截取到指定小数点位置。 参数说明: number:Double类型或Decimal类型,若输入为String类型或Bigint类型,会隐式转换为Double类型后参与运算,其他类型抛异常。 Decimal_places:Bigint类型常量,要截取到的小数点位置,其他类型参数会隐式转为Bigint,省略此参数时默认到截取到个位数。 返回值: 返回值类型为Double或Decimal类型。若number或Decimal_places为null,则返回null。 说明 返回Double类型时,返回的结果的显示可能不符合预期,如示例trunc(125.815, 1)(这个Double类型显示问题任何系统都存在)。 截取掉的部分补0。 Decimal_places可以是负数,负数会从小数点向左开始截取,并且不保留小数部分。如果Decimal_places超过了整数部分长度,则返回0。 示例如下: trunc(125.815)=125.0 trunc(125.815,0)=125.0 trunc(125.815,1)=125.80000000000001 trunc(125.815,2)=125.81 trunc(125.815,3)=125.815 trunc(-125.815,2)=-125.81 trunc(125.815,-1)=120.0 trunc(125.815,-2)=100.0 trunc(125.815,-3)=0.0 trunc(123.345,4)=123.345 trunc(123.345,-4)=0.0 MaxCompute2.0扩展函数 升级到MaxCompute2.0后,产品扩展部分数学函数,新函数若用到新数据类型时,在使用新函数的SQL前,需要加一个set语句: set odps.sql.type.system.odps2=true; 下文将为您详细介绍新扩展的函数。 LOG2 命令格式如下: Double log2(Double number) Double log2(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于以2为底,返回number的对数。 参数说明: number:Double或Decimal类型。 返回值: 返回Double类型。若输入为0或null,则返回null。 示例如下: log2(null)=null log2(0)=null log2(8)=3.0 LOG10 命令格式如下: Double log10(Double number) Double log10(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于以10为底,返回number的对数。 参数说明: number:Double或Decimal类型。 返回值: 返回Double类型。若输入为0或null,则返回null。 示例如下: log10(null)=null log10(0)=null log10(8)=0.9030899869919435 BIN 命令格式如下: String bin(Bigint number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回number的二进制代码表示。 参数说明: number:Bigint类型。 返回值: 返回String类型。若输入为0,返回0,输入为null,则返回null。 示例如下: bin(0)='0' bin(null)='null' bin(12)='1100' HEX 命令格式如下: String hex(Bigint number) String hex(String number) String hex(BINARY number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于将整数或字符转换为十六进制格式。 参数说明: number:如果number是Bigint类型,那么返回number的十六进制表示。如果变量是String类型,则返回该字符串的十六进制表示。 返回值: 返回String类型。若输入为0,返回0,输入为null,则返回异常。 示例如下: hex(0)=0 hex('abc')='616263' hex(17)='11' hex('17')='3137' hex(null)异常返回失败 说明 当输入参数为Binary类型时,请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 UNHEX 命令格式如下: BINARY unhex(String number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回十六进制字符串所代表的字符串。 参数说明: number:为十六进制字符串。 返回值: 返回Binary类型,若输入0,返回失败,若输入为null,则返回null。 示例如下: unhex('616263')='abc' unhex(616263)='abc' RADIANS 命令格式如下: Double radians(Double number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于将角度转换为弧度。 参数说明: number:Double类型数据。 返回值: 返回Double类型,若输入为null,返回null。 示例如下: radians(90)=1.5707963267948966 radians(0)=0.0 radians(null)=null DEGREES 命令格式如下: Double degrees(Double number) Double degrees(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于将弧度转换为角度。 参数说明: number:Double或Decimal类型数据。 返回值: 返回Double类型,若输入null,则返回null。 示例如下: degrees(1.5707963267948966)=90.0 degrees(0)=0.0 degrees(null)=null SIGN 命令格式如下: Double sign(Double number) Double sign(Decimal number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于取输入数据的符号,1.0表示正,-1.0表示负,否则0.0。 参数说明: number:Double或Decimal类型数据。 返回值: 返回Double类型,若输入0,则返回0.0,输入为null,则返回null。 示例如下: sign(-2.5)=-1.0 sign(2.5)=1.0 sign(0)=0.0 sign(null)=null E 命令格式如下: Double e() 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回e的值。 返回值: 返回Double类型。 示例如下: e()=2.718281828459045 PI 命令格式如下: Double pi() 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回π的值。 返回值: 返回Double类型。 示例如下: pi()=3.141592653589793 FACTORIAL 命令格式如下: Bigint factorial(Int number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于返回number的阶乘。 参数说明: number:Int类型数据,且在[0..20]之间。 返回值: 返回Bigint类型,输入为0,则返回1,输入为null或[0..20]之外的值,返回null。 示例如下: factorial(5)=120 --5!=5*4*3*2*1=120 CBRT 命令格式如下: Double cbrt(Double number) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于计算number的立方根。 参数说明: number:Double类型数据。 返回值: 返回Double类型,输入为null,返回null。 示例如下: cbrt(8)=2 cbrt(null)=null SHIFTLEFT 命令格式如下: Int shiftleft(Tinyint|Smallint|Int number1, Int number2) Bigint shiftleft(Bigint number1, Int number2) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于按位左移(<<)。 参数说明: number1:Tinyint|Smallint|Int|Bigint整型数据。 number2:Int整型数据。 返回值: 返回Int或Bingint类型。 示例如下: shiftleft(1,2)=4 --1的二进制左移2位(1<<2,0001左移两位是0100) shiftleft(4,3)=32 --4的二进制左移3位(4<<3,0100左移3位是100000) SHIFTRIGHT 命令格式如下: Int shiftright(Tinyint|Smallint|Int number1, Int number2) Bigint shiftright(Bigint number1, Int number2) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于按位右移(>>)。 参数说明: number1:Tinyint|Smallint|Int|Bigint整型数据。 number2:Int整型数据。 返回值: 返回Int或Bigint类型。 示例如下: shiftright(4,2)=1 -- 4的二进制右移2位(4>>2,0100右移两位是0001) shiftright(32,3)=4 -- 32的二进制右移3位(32>>3,100000右移3位是0100) SHIFTRIGHTUNSIGNED 命令格式如下: Int shiftrightunsigned(Tinyint|Smallint|Int number1, Int number2) Bigint shiftrightunsigned(Bigint number1, Int number2) 说明 请在用到该函数的SQL语句前加set odps.sql.type.system.odps2=true;,并与SQL一起提交运行,以便正常使用新数据类型。 命令说明如下: 该函数用于无符号按位右移(>>>)。 参数说明: number1:Tinyint|Smallint|Int|Bigint整型数据。 number2:Int整型数据。 返回值: 返回Int或Bigint类型。 示例如下: shiftrightunsigned(8,2)=2 --8的二进制无符号右移2位(8>>>2,1000右移两位是0010) shiftrightunsigned(-14,2)=1073741820 -- -14的二进制右移2位(-14>>>2, 11111111 11111111 11111111 11110010右移2位是 00111111 11111111 11111111 11111100)

2019-12-01 23:10:58 0 浏览量 回答数 0

问题

关于C++类的数据成员的存储类型,为什么不能是auto、register和extern

a123456678 2019-12-01 20:11:11 1311 浏览量 回答数 1

问题

为什么这段代码中对象rectangle的各个成员函数输出的值是对的,而box的却都是错的

a123456678 2019-12-01 20:08:56 1166 浏览量 回答数 1

回答

解释见注释 public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入数字个数"); int n = sc.nextInt(); System.out.println("请输入数字"); Scanner ww = new Scanner(System.in); String[] a = new String[n]; for (int i = 0; i < n; i++)//定义数组长度为n,则i从0到n-1;不然数组不够放 { a[i] = ww.next(); } //ttt(); //这个函数要传递数值,如ttt(5); } public static void ttt(int man) { for (int i = 0; i <= man; i++)//这里可以判断i<=Math.sqrt(man);减小运算量 { if (man == Math.pow(i, 2)) { System.out.println("对"); break; } if(man == i){ System.out.println("错"); } } }

蛮大人123 2019-12-02 02:36:56 0 浏览量 回答数 0

回答

这个错误errorC2143:syntaxerror:missing';'before'type' 看着象中文;标点导致的。 另外处理中文有宽字符对应的函数,比如wscanf对应scanf... http://www.cplusplus.com/reference/cwchar/wscanf/ 还有wprintf/ fgetws等等。正确显示还要OS的支持。而输出到文件,可能需要指定编码,类似这样: FILE*fout=fopen("out.txt","w,ccs=UTF-16LE"); 很多奇葩的细节...什么utf-8/utf-16/utf-32 建议先用纯英文把程序调对,再考虑中文...根据你的建议,我再琢磨一会吧,像这种情况确实很奇葩。报什么错误?吧n打印出来看下回复 @sunny冰青:输入13824n已经有值了,temp也应该有值;为什么temp是一个随机值?-858993460的质因数分解为:-858993460=-858993460*exp(1)请按任意键继续...回复 @sunny冰青:scanf("%d",&n);//scanf("请输入待分解的数:%d",&n);inttemp=(int)(sqrt((double)n)+1);关键是这两条语句;E:\C语言学习\divfactor.c(16):errorC2143:syntaxerror:missing';'before'type'E:\C语言学习\divfactor.c(17):errorC2143:syntaxerror:missing';'before'type' 怀疑有中文全角标点... 建议任何时候都用纯英文系统开发,然后本地化成中文,这样不管中文/英文系统下都确保正确显示。 见过太多在英文系统下乱码的程序了。跟这个没有关系,我重新敲一遍。只有在给n直接赋值的情况下,才不会报错。而,在定义n,通过scanf函数给n赋值时,就会报错。这个会不会和编译原理有关。 scanf("请输入待分解的数:%d",&n);//从控制台输入n,就会报错。为什么? 也是醉了 今天哥们可是载了,妈的宵夜吃到一半赶回来修正,还是晚了一步。 楼上说得对,scanf()用法错了,仔细看范例吧。 http://www.cplusplus.com/reference/cstdio/scanf/ 变量要全部定义在函数的开头,之前不能有别的语句。 C语言就是这么规定的。 scanf语句违反了这种规定。 //intn=13824;//待分解的数;直接给n赋值,没有报错; intn; scanf("%d",&n);   inttemp=(int)(sqrt((double)n)+1); //报错位置; intorignum=n; inti; intcount=0;

爱吃鱼的程序员 2020-06-14 19:07:01 0 浏览量 回答数 0

问题

怎样比较平方根倒数算法的效率?

杨冬芳 2019-12-01 19:34:21 893 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播