A. oracle sql 正则表达式
正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境。
本文主要介绍了关于Oracle中正则表达式的使用方法,下面话不多说了,来一起看看详细的介绍。
Oracle使用正则表达式离不开这4个函数:regexp_like、regexp_substr、regexp_instr、regexp_replace。
1、regexp_like
该函数只能用于条件表达式,和 like 类似,但是使用的正则表达式进行匹配
2、regexp_substr
该函数和 substr 类似,用于拾取合符正则表达式描述的字符子串
3、regexp_instr
该函数和 instr 类似,用于标定符合正则表达式的字符子串的开始位置
4、regexp_replace
该函数和 replace 类似,用于替换符合正则表达式的字符串
B. oracle中查找一个字符串中某个字符的位置是什么函数
查找位置的函数为instr函数。下标以1开始,如果不存在则返回0。
举例如下:
1、创建测试表,
create table test_instr(str varchar2(20));
C. oracle中 sql截取某个字符前面和后面的值
1、将新建好的表aaaa,填充需要查询的数据以"_"或者","为分隔符的两条数据。
D. ORACLE用pl/sql中的instr、replace等字符处理函数,字符串为'XXX='时容易视为变量该怎么处理
我要说一句,连PL/SQL都不知道的也能给推荐?
请推荐的人不要只为了完成任务而推荐,为网友,为知道负点责好吗?
如果是C#,直接split+length就可以得到结果,人家要的是PL/SQL.
E. oracle sql分割字符串,在线等,急!
这个要看你的love中的项是多少。如果比较确定或者比较少,那么用instr定位,然后用substr截取就行。按照你和wszf8411的问答,我知道了最多只有三项,因此不用统计
举例:
select no,name,case when instr(love,',') =0 then love else substr(love,1, instr(love,',')-1) end a,
case when instr(love,',') =0 then null
when instr(love,',') <>0 and instr(love,','1,2) =0 then substr(love,instr(love,',')+1)
else substr(love,instr(love,',')+1,instr(love,',',1,2)-instr(love,',')-1) end b,
substr(love,instr(love,',',1,2)+1) c from table
个人感觉似乎case不用写的这么麻烦,因为在没有逗号的时候,找不到截取开始的点,那么自然就是null,不过没环境实验,所以就把截取第二个逗号写的比较麻烦,如果必须这么写才行,那么最后一个c字段参照第二个写。
应该写为
case when instr(love,',') =0 or instr(love,','1,2) =0 then null else substr(love,instr(love,',',1,2)+1) end c
如果这么写没问题,那么第二个可以改一下,写为
when instr(love,','1,2) =0 then substr(love,instr(love,',')+1)
else substr(love,instr(love,',')+1,instr(love,',',1,2)-instr(love,',')-1) end b,
大概就是这个样子,可能还要改一改,这里没办法试验,你可以试一下。
F. oracle like 和instr的差别
instr不属于模糊查询。
不知道你怎么会问这样的问题。
从效率角度来看:
谁能用到索引,谁的查询速度就会快。
like有时可以用到索引,例如:name like '李%'
而当下面的情况时索引会失效:name like '%李'
与其他数据库不同的是,oracle支持函数索引。例如在name字段上建个instr索引。查询速度就比较快了。
G. ORACLE SQL语句 字段类型有哪些
1、需要用到两个字符类函数instr和substr,具体用法介绍如下:
函数:字符定位函数
instr
语法:instr(待处理的字符串,需要查找的字符,开始查找的起始位置,第n次出现)
返回值:字母所在的位置,没有返回
0;
函数:字符定位函数
substr
语法:substr('要切割的值',从第几个位置开始切割,切割几位);
返回值:截取的字符串。
2、该题实现步骤,以字段a内容为'武汉一一科技公司(2009年2月注销)'为例:
第一步:先从字段a的字段第一个字符往前找左括号'('
第一次出现的位置,如下:
select
instr('武汉一一科技公司(2009年2月注销)',
'(',
1,
1)
--
9
from
al;
第二步:从字段第一个字符开始,一直找出左括号'('的前一位就行,如下:
select
substr('武汉一一科技公司(2009年2月注销)',
1,
instr('武汉一一科技公司(2009年2月注销)',
'(',
1,
1)
-
1)
from
al;
注:如果某某公司名称本身可能含有括号的话,建议从最后一个字符倒着往回找左括号出现第一次的位置,即
select
instr('武汉一一科技公司(2009年2月注销)',
'(',
-1,
1)
--
9
from
al;
3、最终答案
select
select
substr(a,
1,
instr(a,
'(',
-1,
1)
-
1)
from
table
;
H. oracle数据库的sql语句问题:用substr()方法截取字符串,字符串的第一位是0还是1,网上说0,我试一下是1
select
substr('a123456',instr('a123456','a')+1,len('a123456')-instr('a123456','a'))
from
al
instr
返回1,
所以给它+1
,
从第2位开始截取到总长度-‘a’这个字符串的位置,
就是
6
,
所以最终会是
select
substr('a123456',2,6)
from
al
这么写能明白吗?
I. oracle数据库中的instr的具体用法,在网上搜了很多,最终还是不明白,请教高手解释。
首先,你运行下这句
selectinstr('123,456',',')fromal
这个就是要查找逗号在123,456中的位置,结果是4,这个你应该明白吧,就是左数第4位是逗号
然后。这句
selectinstr('123,456,789',',')fromal
结果还是4,因为后边不加参数的话,就代表oracle要从最左端起,找第一个逗号,所以还是4,当你想查第二个逗号的位置的时候
selectinstr('123,456,789',',',5)fromal
后边多了一个5,也就是以5为起始位,开始找第一个逗号,所以最后结果就是8,也就是你要找的第二个逗号的位置了
4个参数
selectinstr('123,456,789',',',1,2)fromal
就是代表从第一位开始取,取第二个逗号的位置,结果是8,如果2换成3的话,因为不存在第三个逗号,所以返回0
J. oracle数据库instr怎么用
就直接使用啊。如,instr('abc','a');表示在abc中查找有没有a这个字符。