YashanDB LOG函数

53 阅读1分钟

LOG函数计算expr2以expr1为底的对数,返回一个DOUBLE类型的数值。

expr1和expr2均为YashanDB认可的通用表达式,其值须为数值型,或可以转换为NUMBER类型的字符型(转换失败返回Invalid number错误)。对于其他类型,函数返回类型不支持。

当expr1或者expr2的值为NULL时,函数返回NULL。

根据对数的数学概念,expr1应该为除0和1以外的正数,expr2应该为任意一个正数,除此之外的其他情况函数处理规则见下表:

expr2值\expr1值非0/1正数-Inf负数01InfNan-Nan
正数对数NanNan0Inf0NanNan
-InfNanNanNanNanNanNanNanNan
负数NanNanNanNanNanNanNanNan
0-InfNanNanNan-InfNanNanNan
InfInfNanNanNanInfNanNanNan
NanNanNanNanNanNanNanNanNan
-NanNanNanNanNanNanNanNanNan

示例

SELECT LOG(2,4) res FROM DUAL;
RES
-----------
2.0E+000

SELECT LOG(b'10',b'100') res FROM DUAL;
RES
-----------
2.0E+000

DROP TABLE IF EXISTS number_fd;
CREATE TABLE number_fd(numberf FLOAT, numberd DOUBLE);
INSERT INTO number_fd VALUES(0,5.55);
INSERT INTO number_fd VALUES(1,5.55);
INSERT INTO number_fd VALUES(2,-5.55);
INSERT INTO number_fd VALUES(2,0);
INSERT INTO number_fd VALUES('2','Inf');
INSERT INTO number_fd VALUES('2','-Inf');
INSERT INTO number_fd VALUES('2','Nan');
INSERT INTO number_fd VALUES('2','-Nan');

SELECT LOG(numberf,numberd) res1, LOG(numberd,numberf) res2 FROM number_fd;
       RES1        RES2 
----------- ----------- 
          0        -Inf
        Inf           0
        Nan         Nan
       -Inf           0
        Inf           0
        Nan         Nan
        Nan         Nan
        Nan         Nan