新增 Oracle 兼容函数-V8R6C4B0021

本文介绍了KingbaseESV8R6C4B0021版本中新增的两个Oracle兼容函数:bin_to_num和regexp_count。bin_to_num函数能将二进制位转换为十进制数,支持任意数量的0或1参数。regexp_count函数则用于计算字符串中特定模式出现的次数,支持不区分大小写、多行等多种匹配模式。文章通过实例展示了这两个函数的使用方法及其区别。
摘要由CSDN通过智能技术生成

KingbaseES V8R6C4B0021新增加以下Oracle 兼容函数。

一、bin_to_num

Oracle bin_to_num 函数用于将二进制位转换成十进制的数。

1、传入参数

test=# \df bin_to_num                   
                          List of functions
 Schema |    Name    | Result data type | Argument data types | Type 
--------+------------+------------------+---------------------+------
 sys    | bin_to_num | numeric          | VARIADIC "any"      | func

bin_to_num 传入的参数必须是 0 或 1,参数个数不限。

2、使用例子

test=# select bin_to_num(1,1,1,1,1) from dual;
 bin_to_num 
------------
         31
(1 row)

test=# select bin_to_num(1,1,1) from dual;    
 bin_to_num 
------------
          7
(1 row)

test=# select bin_to_num(1,1,1,1,1,0,0,1,1) from dual;
 bin_to_num 
------------
        499
(1 row)

 二、regexp_count

1、函数参数

REGEXP_COUNT 返回pattern 在source_char 串中出现的次数。如果未找到匹配,则函数返回0。position 变量告诉Oracle 在源串的什么位置开始搜索。在开始位置之后每出现一次模式,都会使计数结果增加1。

REGEXP_COUNT (source_char, pattern [, position [, match_param]] ) ,其中 match_param 变量支持下面几个值:

  • ‘i’ 用于不区分大小写的匹配
  • ‘c’ 用于区分大小写的匹配
  • ‘n’ 允许句点(.)作为通配符去匹配换行符。如果省略该参数,则句点将不匹配换行符
  • ‘m’ 将源串视为多行。即Oracle 将^和$分别看作源串中任意位置任何行的开始和结束,而不是仅仅看作整个源串的开始或结束。如果省略该参数,则Oracle将源串看作一行。
  • ‘x’ 忽略空格字符。默认情况下,空格字符与自身相匹配。

2、使用例子

test=# select REGEXP_COUNT('GEORge','GE',1,'i')  from DUAL;
 regexp_count 
--------------
            2
(1 row)

test=# select REGEXP_COUNT('GEORge','GE',1,'c')  from DUAL;
 regexp_count 
--------------
            1
(1 row)

test=# select REGEXP_COUNT('abc/36.0dfsdad;',E'/36\.0','1','c');
 regexp_count 
--------------
            1
(1 row)

test=# select REGEXP_COUNT('abc/36.0dfsdad;','/36\.0','1','c'); 
 regexp_count 
--------------
            1
(1 row)

--除“;” 外的字符个数
test=# select regexp_count('abc/36.0efgh;ijk','[^;]');
 regexp_count 
--------------
           15
(1 row)

test=# select regexp_count('abc/36.0efgh;ijk','[I]'); 
 regexp_count 
--------------
            0
(1 row)

 注意:Oracle 与 KingbaseES 的正则中 match_param 的意义有部分不同导致结果不同。

三、regexp_instr

1、函数参数

REGEXP_INSTR (source_char, pattern [, position [, occurrence [, return_option [, match_parameter ] ] ] ] )

  • source_char 搜索值的字符表达式,可以是任何数据类型CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB或NCLOB的。
  • pattern 正则表达式
  • position 可选。搜索在字符串中的开始位置。如果省略,则默认为1,这是字符串中的第一个位置。
  • occurrence: 可选。它是模式字符串中的第n个匹配位置。如果省略,默认为1。
  • return_option:可选 指定返回的位置:如果指定0,那么将返回出现的第一个字符的位置,这是默认的;如果指定1,则返回字符之后发生的位置。
  • match_parameter 可选。它允许你修改REGEXP_INSTR功能匹配的行为。

2、使用例子

test=# SELECT REGEXP_INSTR ('World filled with love', 'with', 1, 1, 0, 'i') FROM dual;
 regexp_instr 
--------------
 14
(1 row)

test=# SELECT REGEXP_INSTR ('World filled with love', 'with', 1, 1, 1, 'i') FROM dual;
 regexp_instr 
--------------
 18
(1 row)

test=# SELECT REGEXP_INSTR ('Itmyhome', 'a|i|o|e|u') from dual;
 regexp_instr 
--------------
 6
(1 row)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值