下面收录oracle使用过程中用到的一些技巧。随得随加。
1。oracle中正则表达式支持子组,即submatch
如下例:
select regexp_replace('12|23,34|56,55,78|34', '(\d)\d(\,\d{2})*', '\1' ) from tab
得到结果:“1|2|5|3” => 提取用竖线分隔的每组数字的第一位
select regexp_replace('12', '(\d)\d(\,\d{2})*', '\1' ) from tab
得到结果:“1”
select regexp_replace('12|23,34|56,55,78|34', '\d(\d)', '\1' ) from tab
得到结果:“2|3,4|6,5,8|4” => 提取每组数字的第二位
select regexp_replace('12|23,34|56,55,78|34', '(\d)(\d)', '\2\1' ) from tab
得到结果:“21|32,43|65,55,87|43”=> 实现数字位置的互换
select regexp_replace('89', '(\d)(\d)', '交换位置前:\1\2;交换位置后:\2\1' ) from tabs
得到结果:“交换位置前:89;交换位置后:98”=>可混用,多次使用
解释: 替换表达式使用"\1",即将前面正则表达式每次匹配到的字符串替换为第一个子式(小括号内表达式匹配结果)的内容。
2。oracle中,dump函数可以查看文本编码;
如:SELECT t.tablespace_name,DUMP(t.tablespace_name,16) D FROM tabs t
得到结果:TNAME=“USERS”,D=“Typ=1 Len=5: 55,53,45,52,53”
解释:DUMP函数参数2指明编码显示数字的进制。
3. 功能强大而简洁的Decode函数
在逻辑编程中,经常用到If – Then –Else 进行逻辑判断。在DECODE的语法中,实际上就是这样的逻辑处理过程。它的语法如下:
DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )
Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果。当每个value值被测试,如果value的值为if1,Decode 函数的结果是then1;如果value等于if2,Decode函数结果是then2;等等。事实上,可以给出多个if/then 配对。如果value结果不等于给出的任何配对时,Decode 结果就返回else 。
需要注意的是,这里的if、then及else 都可以是函数或计算表达式。
以一个函数表示一条函数语句,简洁而强悍。