语法: 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