oracle中substr和instr的用法
网上搜集的,整理下
1、substr(string string, int a, int b)
参数1:string 要处理的字符串
参数2:a 截取字符串的开始位置(起始位置是0)
参数3:b 截取的字符串的长度(而不是字符串的结束位置)
例如:
substr("ABCDEFG", 0); //返回:ABCDEFG,截取所有字符
substr("ABCDEFG", 2); //返回:CDEFG,截取从C开始之后所有字符
substr("ABCDEFG", 1, 3); //返回:ABC,截取从A开始3个字符 ,这里开始是1和3返回都是一个字符串
substr("ABCDEFG", 1, 100); //返回:ABCDEFG,100虽然超出预处理的字符串最长度,但不会影响返回结果,系统按预处理字符串最大数量返回。
substr("ABCDEFG", 0, -3); //返回:EFG,注意参数-3,为负值时表示从尾部开始算起,字符串排列位置不变。
2、substr(string string, int a)
参数1:string 要处理的字符串
参数2:a 可以理解为从索引a(注意:起始索引是0)处开始截取字符串,也可以理解为从第 (a+1)个字符开始截取字符串。
例如:
substr("ABCDEFG", 0); //返回:ABCDEFG, 截取所有字符
substr("ABCDEFG", 2); //返回:CDEFG,截取从C开始之后所有字符
1.instr
在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。
语法如下:instr( string1, string2 [, start_position [, nth_appearance ] ] )
string1 源字符串,要在此字符串中查找。
string2 要在string1中查找的字符串.
start_position 代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。
nth_appearance 代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。
注意:
如果String2在String1中没有找到,instr函数返回0.
应用于:
Oracle 8i, Oracle 9i, Oracle 10g, Oracle 11g
举例说明:
select instr('abc','a') from dual; -- 返回 1
select instr('abc','bc') from dual; -- 返回 2
select instr('abc abc','a',1,2) from dual; -- 返回 5
select instr('abc','bc',-1,1) from dual; -- 返回 2
select instr('abc','d') from dual; -- 返回 0
相关文档:
什么是合并多行字符串(连接字符串)呢,例如:
SQL> desc test;
Name Type Nullable Default Comments
------- ------------ -------- ------- --------
COUNTRY VARCHAR2(20) Y &nb ......
||------- 维护数据完整性 -------||
【约束】
//约束
not null //非空
unique //唯一 不能重复,但可以为空
primary key //主键
foreign key //外键
check //满足条件
//商店售货系统表设计案例(1)
//goods 商品表
goodsid ......
在oracle中存储过程或者视图等对象创建时,如果涉及到另外一个用户的表,即使你已经grant dba了,也不行,必须显式地赋予查询权限。否则,你会发现在pl/sql中可以执行语句,但是一旦放到create 中就告诉你权限不足。
grant select any table to user ......
写存储过程时,用到拆分字符串,第一个传入参数为带分割符的字符串,第二个为分隔符的个数,下面是单提出来的分割字符串方法,
create or replace procedure split( ......
update EMPLOYEE set BADGE=trim(BADGE); // 这样可去除字符串两边的空格
update EMPLOYEE set BADGE=replace(BADGE,' ',''); // 这样能去除所有的空格
SELECT replace(string,chr(13),'') from DUAL ----换行
SELECT replace(string,chr(10),'') fr ......