语法: INSTR(string,subString,position,ocurrence)

string:源字符串
subString:要查找的子字符串
position:查找的开始位置
ocurrence:源字符串中第几次出现的子字符串

这里的position和ocurrence是可以省略的.

如: 查询字符串里含有"aaa"即条件成立:

IF INSTR('abcdefgaaa','aaa') > 0 THEN
.....
END IF;

也可以使用定位, 如常的判断以什么结尾, 或者以为什么开头的, 知道指定位置的查询:

 IF INSTR(t_staging_column_basepk,',',length(t_staging_column_basepk)) >0 THEN
    t_staging_column_basepk := ltrim(t_staging_column_basepk) ||t_staging_column_logpk;
        t_staging_column_basepk := ltrim(t_staging_column_basepk)||','||t_staging_column_logpk;
    END IF;

2. 拼接字符串 :  ||

经常用到拼接字符串, 这里需要使用两个竖线 || 来连接字符串. 字符串用单引号来定义. 如:

'abc' || 'def' = abcdef

3. 截取字符串 : substr

语法: SUBSTR(string,start_position,[length])    求子字符串,返回字符串
解释:

string 源字符串
start_position   开始位置(从0开始)
length 可选项,子字符串的个数

这里可以结果instr来确定位置, 如:从找到table里里的"."数字开始+1往后截取所有字符:

table_name := substr(i_base_table_name,instr(i_base_table_name,'.',-1)+1);

也可以按指定位置截取指定字符数:

substr("ABCDEFG", 0, 3); //返回:ABC,截取从A开始3个字符 

4.替换字符串, decode, replace

语法 : decode (条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

IF 条件=值1 THEN
RETURN(翻译值1)
ELSIF 条件=值2 THEN
RETURN(翻译值2)
......
ELSIF 条件=值n THEN
RETURN(翻译值n)
ELSE
RETURN(缺省值)
END IF

'decode(src,''I'',''ADD'',''U'',''UPD'',''D'',''DEL'')'

这个方法很有意思, 将一个字符串上指定的值换成另外一个值. 系统会根据","的个数来判断哪个是源, 哪个是目标替换的新值.除第一个src以外, 从str1开始, 奇数是源, str2偶数是目的新值.这个例子的就是如果src的值是I,替换成ADD,如果值是U 替换也UPD.以此类推.

另外一种replace方法:

语法: replace(strSource, str1, str2) 将strSource中的str1替换成str2

解析:strSource:源字符串

str1: 要替换的字符串

str2: 替换后的字符串

select '替换字符串' as oldStr, replace('替换字符串', '替换', '修改') as newStr from dual

5. 判断字符串的长度 : length , lengthb

语法及释义:

length(string)计算string所占的字符长度:返回字符串的长度,单位是字符

lengthb(string)计算string所占的字节长度:返回字符串的长度,单位是字节

select length('飘') from dual
select lengthb('飘') from dual

6. 判断字符串为空时,返回新值 : NVL(), NVL2()

语法: nvl(string1, replace_with)

解释: 如果string1为null,那么这个函数返回 replace_with 所代表的值.

nvl(to_char(some_numeric),’some string’)    --其中some_numeric指某个数据类型的值。
nvl(yan,0) 的意思是如果yan是null, 则取0值。

语法: nvl2()(E1, E2, E3)

解释: 它的功能是如果E1为NULL,则函数返回E3,若E1不为null,则返回E2。

例子: 如果testVariable为null,返回-1, 否则返回888.

nvl(testVariable,888,-1) 
字符串 拼接PY类型转换: ■ 字符串 拼接不能只是简单相加‘+’,只能利用于整数运算,但是纯数字的 字符串 会直接被转换成数字类型,非纯数字的 字符串 会出错,包括比较运算符<>=全部会直接进行数字转换再运算。 ■’||‘可以实现 字符串 或者数字拼接,不论数量。 值得注意类型转换,纯数字会被转换成 字符串 ,’+‘永远输出数字结果。’||'永远输出 字符串 结果。 常用 函数: ■concat( 字符串 ,序号...
Oracle 数据库教程六、 存储过程 / PLSQL 语句6.1 PL-SQL语句简介6.1.1 PL-SQL概述6.1.2 PL/SQL块结构6.1.3 代码注释和字符集6.1.4 基本数据类型6.1.5 定义变量和常量 六、 存储过程 / PLSQL 语句 6.1 PL-SQL语句简介 6.1.1 PL-SQL概述 PL/SQL是一种过程化语言,在PL/SQL中可以通过IF语句或者LOOP语句实现控制程序的执行流程,甚至可以定义变量,以便在语句之间传递数据信息,这样PL/SQL语言就能实现操控程序 处理 的细节过程。  在SQL中可以调用自定义函数,但是不能够调用 存储过程 。SQL中调用自定义函数有一定的限制,如果是查询语句,则不可有DML操作,除非使用匿名事务AT。当然,在UPDATE,DELETE中使用的自定义函数可以带DML操作。      如何用SQL调用 存储过程 呢?因为SQL只能调用自定义函数,但是自定义函数可以调用 存储过程 ,因此,可以SQL--
--Count the length of string select lengthb('select * from scott.emp') as countted_by_byte, length('select * from scott.emp') as countted_by_char from dual; --For some character encoding, t...
1.下面代码是一个模糊查询 ,myName可以理解为输入框里面输入的内容 e.name是数据库里面的内容 简单来说就是 用输入框里面的myName 到数据库里面 查找e.name和 myName匹配的内容 进行模糊查询 2.注:MySQL中的模糊查询 like 和 Oracle 中的 instr() 函数有同样的查询效果; 如下所示:MySQL: select * from tableName where name like ‘%helloworld%’; Oracle :select * from ta