select * from v ;
select v.汉字, v.拼音, level from v connect by level <= length(v.汉字) --循环level 次数
select v.汉字, v.拼音, level
,substr(v.汉字,level,1) as 汉字拆分 --level 每循环一次会增加1
,substr(v.拼音,level,1) as 拼音拆分
,'substr('||v.汉字||','||level||',1)' as fun --拆分时执行的substr语句
from v
connect by level <= length(v.汉字)
从FUN字段可以看出,语句遍历执行了四次,level字段值每次增加1
删除字符串中不需要的字符串
--将员工姓名中含有(AEIOU)的字母去掉
select emp.ename,
translate(emp.ename, '1AEIOU','1') as stripped1
from emp
where deptno = '10'
注意:数字1 不能省略,没有会为NULL
也可以直接使用正则表达式
select emp.ename,
regexp_replace(emp.ename,'[AEIOU]') as stripped1
,regexp_replace(emp.ename,'[^AEIOU]') as stripped2
from emp
where deptno = '10'
可以看出,在正则表达中,箭头(^)表示否定的意思,表示去除限定的字符外其他的全部替换为空('')
且 ^ 在方括号内,字符串最前面,
如果不在方括号内或者没有方括号,在字符串之前,则表示在字符串开始的位置
$ 该符号表示字符串的结束
^ - ^ ……
拆分字符串,递归查询:CONNECT BY正则表达式regexp_replace;create or replace view v as select '天天向上' as 汉字, 'TTXS' as 拼音 from dual
select f_find('Ap@2233ll@@l@@','@') from dual 返回结果为5,代表‘@’在该
字符串
中
出现5次。
select f_find('Ap@223SWEQQQ3ll@@l@@','Q') from dual---返回3,代表Q在
字符串
中
出现了3次,
select f_find('我是
中
国人,你是哪国人','国') from dual---返回2,代表国出现了2次
oracle
树查询的最重要的就是select…start with…connect by…prior语法了。依托于该语法,我们可以将一个表形结构的以树的顺序列出来。在下面列述了
oracle
中
树型查询的常用查询方式以及经常使用的与树查询相关的
oracle
特性函数等,在这里只涉及到一张表
中
的树查询方式而不涉及多表
中
的关联等。
1、准备测试表和测试数据
SELECT REGEXP_SUBSTR('A,B,C,D,E', '[^,]+', 1, LEVEL) FROM DUAL
CONNECT BY REGEXP_SUBSTR('A,B,C,D,E', '[^,]+', 1, LEVEL) IS NOT NULL;
这将返回一个由单个字符组成的列:
其
中
,'[^,]+'表示匹配不包含逗号的一个或多个字符。CONNECT BY子句允许查询在每次执行时迭代,直到所有匹配的子
字符串
都被返回。LEVEL是一个伪列,它返回当前行所在的迭代级别。
-bash: ulimit: open files: 无法修改 limit 值: 不允许的操作bash: ulimit: open files: cannot modify limit: 不允许的操作
23897
-bash: ulimit: open files: 无法修改 limit 值: 不允许的操作bash: ulimit: open files: cannot modify limit: 不允许的操作
x32841768:
-bash: ulimit: open files: 无法修改 limit 值: 不允许的操作bash: ulimit: open files: cannot modify limit: 不允许的操作
x32841768:
ORACLE 单列多个索引和组合索引的区别详解
iloversilver:
-bash: ulimit: open files: 无法修改 limit 值: 不允许的操作bash: ulimit: open files: cannot modify limit: 不允许的操作
Hi,好先生: