• 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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • BITOR/BITXOR 之前版本已支持BITAND, 对number进行比特运算, or/xor 运算
    SELECT BITOR(5,3) FROM DUAL;
     bitor 
    -------
         7
    (1 row)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • REMAINDER 计算余数,在计算时使用ROUND, 而MOD 使用floor
    SELECT REMAINDER(5.5,2) FROM DUAL;
     remainder 
    -----------
          -0.5
    (1 row)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 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)
      
      • 1
      • 2
      • 3
      • 4
      • 5

    字符串相关函数

    • INSTRB 基于字节查找子串位置(字节)

      SELECT INSTRB('qwe测试abc', 'ab') FROM DUAL;
       instrb 
      --------
           10
      (1 row)
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • REGEXP_INSTR/REGEXP_REPLACE 改为C实现 通过正则表达式查找,修改字符串

    • REPLACE 查找并替换字符串中匹配的子串

      SELECT REPLACE('abcdAbcdasd', 'a') FROM DUAL;
        replace  
      -----------
       bcdAbcdsd
      (1 row)
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • SOUNDEX 返回由四个字符组成的代码 (SOUNDEX) 以评估两个字符串在发音时的相似性,一般用于查找发音相同字符串

      SELECT SOUNDEX('SMYTHE')=SOUNDEX('Smith') as same FROM DUAL;
       same 
      ------
       t
      (1 row)
      
      • 1
      • 2
      • 3
      • 4
      • 5

    日期时间相关函数

    • MONTHS_BETWEEN 修改以与oracle 语义一致,之前版本会丢弃入参的时分秒信息

    • TZ_OFFSET 获取时区的偏移

      SELECT TZ_OFFSET('Asia/Shanghai') FROM DUAL;
       tz_offset 
      -----------
       08:00:00
      (1 row)
      
      • 1
      • 2
      • 3
      • 4
      • 5

    格式转换

    • CONVERT 转换字符串编码

       SELECT CONVERT('娴嬭瘯', 'gbk', 'utf8') from dual; FROM DUAL;
       convert 
      ---------
       测试
      (1 row)
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • NUMTOYMINTERVAL 把number 转为INTERVAL

      SELECT NUMTOYMINTERVAL(1,'YEAR') FROM DUAL;
       numtoyminterval 
      -----------------
       1 year
      (1 row)
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • 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)
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    • 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)
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • KURTOSIS_POP/KURTOSIS_SAMP 用于确定给定数据分布的异常值特征 总体峰度/样本峰度

      select kurtosis_pop(column1) from  (values (1),(2),(4),(8)) x;
            kurtosis_pop       
      -------------------------
       -1.09897920604914942667
      (1 row)
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • 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)
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • SYS_CONTEXT/USERENV SYS_CONTEXT 获取当前session 信息或判断当前用户role, USERENV 获取参数当前session 信息

    • EMPTY_CLOB 获取空的clob, 目前实现为返回‘’

    • ORA_HASH 计算hash

    • VSIZE 获取表达式内部占用的字节数,等同于pg_column_size

  • 相关阅读:
    云原生之kubernetes调度约束(scheduler调度器)
    【煤矿虚拟仿真体验】VR采煤机技能培训有效提高训练效果
    《树莓派项目实战》第六节 使用超声波模块测距
    语音与影像上的自督导式学习模型、一些老版本的补充(李宏毅2022
    Bit, byte, KB, GB, MG
    1476_OSP以及HASL等几种PCB表面处理工艺了解
    C专家编程 第2章 这不是Bug,而是语言特性 2.2 多做之过
    HTTP协议详解
    Leetcode64. 最小路径和
    C#里的var和dynamic区别到底是什么,你真的搞懂了嘛
  • 原文地址:https://blog.csdn.net/qq_17713935/article/details/126732830