lightdb22.3特性预览-增强对oracle内置函数的兼容
Posted 紫无之紫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lightdb22.3特性预览-增强对oracle内置函数的兼容相关的知识,希望对你有一定的参考价值。
lightdb22.3特性预览 - 增强对oracle内置函数的兼容
在22.3版本 LightDB 新增/修改了如下函数以加强对 Oracle 的兼容。下面对这些函数进行简单描述,具体案例等参考正式发版后的官方文档。
数学相关函数
- BIN_TO_NUM 转换多个0,1 为number
SELECT BIN_TO_NUM(1,0,1,0) FROM DUAL;
bin_to_num
------------
10
(1 row)
- BITOR/BITXOR 之前版本已支持BITAND, 对number进行比特运算, or/xor 运算
SELECT BITOR(5,3) FROM DUAL;
bitor
-------
7
(1 row)
- REMAINDER 计算余数,在计算时使用ROUND, 而MOD 使用floor
SELECT REMAINDER(5.5,2) FROM DUAL;
remainder
-----------
-0.5
(1 row)
-
ROUND_TIES_TO_EVEN 四舍五入,具有和round(number)函数相同的输入参数, 目的是补充round(number)函数不能实现的场景,当存在两个数一样接近时,取偶数值。如2.4舍入为2,2.6舍入为3;2.5舍入为2,1.5舍入为2
SELECT ROUND_TIES_TO_EVEN(0.25,1) "ROUND_EVEN" FROM DUAL; ROUND_EVEN ------------ 0.2 (1 row)
字符串相关函数
-
INSTRB 基于字节查找子串位置(字节)
SELECT INSTRB('qwe测试abc', 'ab') FROM DUAL; instrb -------- 10 (1 row)
-
REGEXP_INSTR/REGEXP_REPLACE 改为C实现 通过正则表达式查找,修改字符串
-
REPLACE 查找并替换字符串中匹配的子串
SELECT REPLACE('abcdAbcdasd', 'a') FROM DUAL; replace ----------- bcdAbcdsd (1 row)
-
SOUNDEX 返回由四个字符组成的代码 (SOUNDEX) 以评估两个字符串在发音时的相似性,一般用于查找发音相同字符串
SELECT SOUNDEX('SMYTHE')=SOUNDEX('Smith') as same FROM DUAL; same ------ t (1 row)
日期时间相关函数
-
MONTHS_BETWEEN 修改以与oracle 语义一致,之前版本会丢弃入参的时分秒信息
-
TZ_OFFSET 获取时区的偏移
SELECT TZ_OFFSET('Asia/Shanghai') FROM DUAL; tz_offset ----------- 08:00:00 (1 row)
格式转换
-
CONVERT 转换字符串编码
SELECT CONVERT('娴嬭瘯', 'gbk', 'utf8') from dual; FROM DUAL; convert --------- 测试 (1 row)
-
NUMTOYMINTERVAL 把number 转为INTERVAL
SELECT NUMTOYMINTERVAL(1,'YEAR') FROM DUAL; numtoyminterval ----------------- 1 year (1 row)
-
TO_BLOB 把raw 转为blob
聚合函数
-
ANY_VALUE 会选择被分到同一组的数据里第一条数据的指定列值作为返回数据, 主要用于group by 场景下,通过使用 ANY_VALUE 消除了将每一列指定为GROUP BY 子句的一部分的必要性
create table test_any_value(key1 int, key2 int); insert into test_any_value values(1, 1); select any_value(key2) from test_any_value group by key1; any_value ----------- 1 (1 row)
-
BIT_AND_AGG/BIT_OR_AGG/BIT_XOR_AGG 位聚合运算, 对同一组数据进行位运算
select bit_and_agg(column1) from (values (1),(2),(4),(8)) x; bit_and_agg ------------- 0 (1 row)
-
KURTOSIS_POP/KURTOSIS_SAMP 用于确定给定数据分布的异常值特征 总体峰度/样本峰度
select kurtosis_pop(column1) from (values (1),(2),(4),(8)) x; kurtosis_pop ------------------------- -1.09897920604914942667 (1 row)
-
SKEWNESS_POP/SKEWNESS_SAMP 用于确定给定数据分布的对称性 总体偏度/样本偏度
其他
-
NLS_CHARSET_ID /NLS_CHARSET_NAME 只是为了兼容oracle, CHARSET 为oracle 的CHARSET
SELECT NLS_CHARSET_ID('AL32UTF8') FROM DUAL; nls_charset_id ---------------- 873 (1 row)
-
SYS_CONTEXT/USERENV SYS_CONTEXT 获取当前session 信息或判断当前用户role, USERENV 获取参数当前session 信息
-
EMPTY_CLOB 获取空的clob, 目前实现为返回‘’
-
ORA_HASH 计算hash
-
VSIZE 获取表达式内部占用的字节数,等同于pg_column_size
以上是关于lightdb22.3特性预览-增强对oracle内置函数的兼容的主要内容,如果未能解决你的问题,请参考以下文章