PLSQL_基础系列8_操作符标LPAD / TRUNC / DECODE / TRIM / INSTR

2014-12-09 BaoXinjian

一、字符函数



1. LOWER (strexp) - 返回字符串,并将所有的字符小写.

select lower(‘ABCDE‘) from dual

2. UPPER (strexp)     返回字符串,并将所有的字符大写.

select upper(‘abcdf‘) from dual

3.INITCAP(strexp)    将字符串的(每个单词的)第一个字母变为大写,后面的小写;

select initcap(‘ source fore‘) from dual

select initcap(‘ SOURCE FORE‘) from dual   -- Source Fore(如果都是大写会自动将第一个字母变为大写其他的小写)

4.CONCAT(strexp, strexp):  连接两个字符串

select concat(first_name,last_name) from employees

5.substr(str,start_index,length): 从指定的位置截取指定长度的字符串

select substr(‘abcdefg‘,2,3) from dual

6.LENGTH(strexp):返回字符串的长度

select length(‘abcdef‘) from dual

7.INSTR(C1,C2,I,J): 在一个字符串中搜索指定的字符,返回发现指定的字符的位置;

C1:搜索的字符

C2:要搜索的字符

I:表示从哪个位置开始查找

J:查找第几次出现

select instr(‘aborcdoryuklhorp‘,‘or‘,1,2) from dual  ---7
select instr(‘aborcdoryuklhorp‘,‘or‘,6,2) from dual  ---14   

8.LPAD( string1, padded_length, [ pad_string ] )   在列的左边粘贴字符

select lpad(‘acd‘,8) from dual

9.RPAD(粘贴字符)    RPAD? 在列的右边粘贴字符

select rpad(‘acd‘,8,‘‘) from dual

select rpad(‘acdefghijklm‘,8,‘‘) from dual

10.trim(str):截取字符串两端特殊字符

select   ‘  abd   ‘   from dual

select   trim(‘  abd   ‘)   from dual  

11.replace(str,search_str[,replace_str]): 将每次在str中出现的search_str用replace_str替换

select replace(‘HELOVEYOU‘,‘HE‘,‘I‘) from dual

二、数学函数



1.round:传回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。

select round(3000.926) from dual  --3001

--小数部分是两位

select round(3000.926,2) from dual  --3000.93

2.TRUNC函数返回处理后的数值,其工作机制与ROUND函数极为类似,

--只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。

select trunc(3000.926) from dual   --3000

select trunc(3000.926,2) from dual  --3000.92

3.mod(number1,number2)两个数值相除并返回其余数。运算符执行 number1 除以 number2 操作

select mod(1600,300) from dual   --100

三、转化函数



1.TO_CHAR(date,‘fmt‘) : 是字符类型的函数,转化日期为字符格式(‘fmt‘)

  • 必须用单引号括起来,并且是大小写敏感
  • 可包含任何有效的日期格式
  • fmt值的宽度正好能容纳所有的有效数字

2.修改当前的语言环境为中文

alter session set nls_language=‘SIMPLIFIED CHINESE‘
--输入当前的系统日期,格式为 yyyy-mm-dd
select sysdate from dual
select to_char(sysdate,‘yyyy-mm-dd‘) from dual

--输入当前的系统日期,格式为 yyyy-mon-dd
select to_char(sysdate,‘yyyy-mon-dd‘) from dual

--输入当前的系统日期,格式为 yyyy-month-dd
select to_char(sysdate,‘yyyy-month-dd‘) from dual

--输入当前的系统日期,格式为 yyyy-mon-dd-day
select to_char(sysdate,‘yyyy-mon-dd day‘) from dual

--输入当前的系统日期,格式为 yyyy-mon-dd-dy
select to_char(sysdate,‘yyyy-mon-dd-dy‘) from dual

--输入当前的系统日期,格式为 yyyy-mon-dd-dy-d
select to_char(sysdate,‘yyyy/mon/dd/dy/d‘) from dual

--ddspth 日期的英文显示
--输入当前的系统日期,格式为 yyyy-mon-ddspth
select to_char(sysdate,‘yyyy-mon-ddspth‘) from dual  --2010-4月 -seventeenth

3.修改为英文环境(此语句只对当前的窗口有效,当窗口关闭虚重新设置)

alter session set nls_language=AMERICAN;
--输入当前的系统日期,格式为 yyyy-mm-ddselect to_char(sysdate,‘yyyy-mm-dd‘) from dual
--输入当前的系统日期,格式为 yyyy-mon-dd
select to_char(sysdate,‘yyyy-mon-dd‘) from dual  --2010-apr-17

--输入当前的系统日期,格式为 YYYY-MON-DD
select to_char(sysdate,‘yyyy-MON-dd‘) from dual  --2010-APR-17

--输入当前的系统日期,格式为 YYYY-MONTH-DD
select to_char(sysdate,‘YYYY-MONTH-DD‘) from dual
--输入当前的系统日期,格式为 yyyy-mon-dd-day
select to_char(sysdate,‘yyyy-mon-dd-day‘) from dual
select to_char(sysdate,‘yyyy-mon-dd-DAY‘) from dual  --2010-apr-17-SATURDAY

--输入当前的系统日期,格式为 yyyy-mon-dd-dy
select to_char(sysdate,‘yyyy-mon-dd-dy‘) from dual   --2010-apr-17-sat
select to_char(sysdate,‘yyyy-mon-dd-DY‘) from dual    --2010-apr-17-SAT

4.ddspth 不分中英文环境 日期的英文显示

--输入当前的系统日期,格式为 yyyy-mon-ddspth
select to_char(sysdate,‘yyyy-mon-ddspth‘) from dual  --2010-apr-seventeenth

--小时 分 秒
--输入当前的系统日期,格式为 yyyy-mon-dd HH24:MI:SS
select to_char(sysdate,‘yyyy-mon-dd HH24:MI:SS‘) from dual

--输入当前的系统日期,格式为 dd-mon-yyyy SS:HH24:MI(格式没有顺序)
--注意:使用to_char函数转化日期--->字符 格式没有顺序
select to_char(sysdate,‘dd-mon-yyyy SS:HH24:MI‘) from dual

--输入当前的系统日期,格式为 yyyy-mon-dd HH24:MI:SS AM(PM)
--增加AM PM  --在这个格式中AM PM没有区别 ,表达的含义是一致的
  select to_char(sysdate,‘yyyy-mon-dd HH24:MI:SS AM‘) from dual
  select to_char(sysdate,‘yyyy-mon-dd HH24:MI:SS PM‘) from dual
  select to_char(sysdate,‘yyyy-mon-dd HH24:MI:SS PM‘) from dual
--输入当前的系统日期,格式为 dd of  month (19 of 1月)
--可以在格式中增加字符串,字符串用""引起来
select to_char(sysdate,‘dd  of  month ‘) from dual

5.to_date(char,fmt)  转化字符为日期

第一个参数:符合日期格式的字符
第二个参数:格式(同to_char函数转化日期的格式)

alter session set nls_language=‘SIMPLIFIED CHINESE‘
alter session set nls_language=AMERICAN;
--转化2008-04月-18这个字符为日期
select to_date(‘2008-4月-18‘,‘yyyy-mon-dd‘) from dual;
select to_date(‘4月-18-2008‘,‘mon-dd-yyyy‘) from dual;

6.TO_CHAR(number,‘fmt‘):是字符类型的函数,转化数字为字符

四、日期函数



1. 计算2008-4月-1日和2008-8月-10日相差多少个月--使用months_between(date1,date2)函数

select months_between(to_date(‘2008-4月-01‘,‘yyyy-mon-dd‘),to_date(‘2008-8月-10‘,‘yyyy-mon-dd‘))
from dual
select months_between(to_date(‘2008-8月-10‘,‘yyyy-mon-dd‘),to_date(‘2008-4月-01‘,‘yyyy-mon-dd‘))
from dual

2. 相差多少个月四舍五入到整数

select round(months_between(to_date(‘2008-8月-10‘,‘yyyy-mon-dd‘),to_date(‘2008-4月-01‘,‘yyyy-mon-dd‘)))from dual
--给出日期2008-4月-01  计算六个月后的日期

--使用Add_months(date1,number)
select add_months(to_date(‘2008-4月-01‘,‘yyyy-mon-dd‘),6) from dual

3. 给出日期date和星期x之后计算下一个星期的日期--使用NEXT_DAY(date,‘day‘)

select next_day(to_date(‘2010-4月-01‘,‘yyyy-mon-dd‘),‘星期三‘) from dual

4. 计算指定日期所在月份的最后一天的日期--使用last_day(date)

select last_day(to_date(‘2010-3月-01‘,‘yyyy-mon-dd‘)) from dual

Thanks and Regards

参考: http://blog.163.com/jd_wangchunhe/blog/static/89945993201031915124106/

时间: 2024-10-09 19:25:38

PLSQL_基础系列8_操作符标LPAD / TRUNC / DECODE / TRIM / INSTR的相关文章

PLSQL_基础系列2_分组函数GROUP BY / ROLLUP / CUBE

2014-11-30 BaoXinjian 一.摘要 ROLLUP 运算符生成的结果集类似于 CUBE 运算符生成的结果集. 1. 下面是 CUBE 和 ROLLUP 之间的具体区别: CUBE 生成的结果集显示了所选列中值的所有组合的聚合. ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合. 2. ROLLUP 优点: (1). ROLLUP 返回单个结果集,而 COMPUTE BY 返回多个结果集,而多个结果集会增加应用程序代码的复杂性. (2). ROLLUP 可以在服务器游

PLSQL_基础系列1_正则表达式regexp_like/substr/instr/replace

2014-11-30 BaoXinjian 一.摘要 ORACLE中的支持正则表达式的函数主要有下面四个: 1 REGEXP_LIKE :与LIKE的功能相似 2 REGEXP_INSTR :与INSTR的功能相似 3 REGEXP_SUBSTR :与SUBSTR的功能相似 4 REGEXP_REPLACE :与REPLACE的功能相似 它们在用法上与Oracle SQL 函数LIKE.INSTR.SUBSTR 和REPLACE 用法相同. 二.调用格式 1. 格式: REGEXP_INSTR

PLSQL_基础系列9_时间戳Timestamp

2013-11-09 BaoXinjian 1. 获取系统时间的语句(ssxff6获取小数点后面六位) select sysdate,systimestamp,to_char(systimestamp, 'yyyymmdd hh24:mi:ssxff6'), to_char(systimestamp, 'yyyymmdd hh24:mi:ss.ff6') from dual; 2. 字符型转成timestamp select to_timestamp('2011-09-14 12:52:42.1

PLSQL_基础系列1_正则表达REGEXP_LIKE / SUBSTR / INSTR / REPLACE

2014-11-30 BaoXinjian 一.摘要 ORACLE中的支持正则表达式的函数主要有下面四个: 1 REGEXP_LIKE :与LIKE的功能相似 2 REGEXP_INSTR :与INSTR的功能相似 3 REGEXP_SUBSTR :与SUBSTR的功能相似 4 REGEXP_REPLACE :与REPLACE的功能相似 它们在用法上与Oracle SQL 函数LIKE.INSTR.SUBSTR 和REPLACE 用法相同. 二.调用格式 1. 格式: REGEXP_INSTR

PLSQL_基础系列4_时间间隔INTERVAL

2014-12-08 BaoXinjian 一.摘要 INTERVAL数据类型用来存储两个时间戳之间的时间间隔. 可以指定years and months,或者days,hours,minuts,seconds之间的间隔. ORACLE支持两种INTEVAL类型,它们分别是YEAR TO MONTH和DAY TO SECOND. 每个类型都包含leading field和trailing field.主参数定义要被计算的date或者time,副参数定义最小增长量 二.语法 1. Oracle语法

PLSQL_基础系列3_合并操作UNION / UNION ALL / MINUS / INTERSET

2014-11-30 BaoXinjian 一.摘要 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到Union或者Union All关键字.Union(或称为联合)的作用是将多个结果合并在一起显示出来. Union和Union All的区别是,Union会自动压缩多个结果集合中的重复结果,而Union All则将所有的结果全部显示出来,不管是不是重复. Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序: Union All:对两个结果集进行

PLSQL_基础系列7_插入方式Pivoting / Unconditional / Conditional ALL / Conditional FIRST INSERT

2014-12-08 BaoXinjian 一.摘要 Oracle Insert的多种方式 1. standard insert 1. pivoting Insert 2. unconditional insert 3. conditional all insert / conditional first insert 二.标准Insert - 单表单行插入 标准Insert -- 单表单行插入 1. 语法: INSERT INTO table [(column1,column2,...)] V

PLSQL_基础系列5_视图控制WITH CHECK OPTION

2014-12-09 BaoXinjian 一.摘要 通过有with check option选项的视图操作基表(只是面对单表,对连接多表的视图正在寻找答案),有以下结论: 首先视图只操作它可以查询出来的数据,对于它查询不出的数据,即使基表有,也不可以通过视图来操作. 1. 对于update, 有with check option,要保证update后,数据要被视图查询出来 2. 对于delete, 有无with check option都一样 3. 对于insert, 有with check

PLSQL_基础系列6_判断操作NVL / NULLIF / COALESCE / NVL2

2014-12-08 BaoXinjian 一.摘要 下列函数可用于任何数据类型,且适合使用空值的场合:NVL (expr1, expr2)NVL2 (expr1, expr2, expr3)NULLIF (expr1, expr2)COALESCE (expr1, expr2, ..., exprn) 二.案例 - NVL 1. NVL函数的格式如下:NVL(expr1,expr2) 2. 含义是:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数