PLSQL_基础系列08_操作符标LPAD / TRUNC / DECODE / TRIM / INSTR(案例)

简介: 2014-12-09 Created By BaoXinjian 一、字符函数 1. LOWER (strexp) - 返回字符串,并将所有的字符小写. select lower('ABCDE') from dual   2.

2014-12-09 Created By 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-dd
select 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/

ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建
相关文章
|
3月前
|
SQL 数据采集 关系型数据库
|
Oracle 关系型数据库 数据库
Oracle 数据库中字符串函数: SUBSTR()、LENGTH()、LOWER()、UPPER()、TRIM() 。
Oracle 数据库中字符串函数: SUBSTR()、LENGTH()、LOWER()、UPPER()、TRIM() 。
148 1
|
SQL 关系型数据库 MySQL
sql中substr()函数用法详细
sql中substr()函数用法详细
1351 0
|
SQL 关系型数据库 PostgreSQL
sql中的substring()、to_char()、extract()、concat()等函数
日期数据类型的“substring”并没有很好的定义,因为它取决于数据的外部格式。 在大多数情况下,应该使用extract()或to_char()函数。 通常对于要返回的数据,需要to_char(),并对其进行操作(包括比较) - extract()。有些情况下,这条通用规则不适用,但这些通常是数据结构不是很好的标志。
212 0
|
SQL Oracle 关系型数据库
【SQL开发实战技巧】系列(十一):拿几个案例讲讲translate|regexp_replace|listagg|wmsys.wm_concat|substr|regexp_substr常用函数
translate|regexp_replace|listagg|wmsys.wm_concat|substr|regexp_substr常用函数。如何使用translate或regexp_replace提取姓名的大写首字母缩写、如何使用translate或regexp_replace按字符串中的数值排序、如何聚合表中的行创建一个以逗号分隔拼接的字符串(函数LISTAGG、wmsys.wm_concat)、如何使用substr或regexp_substr提取第N个分隔符的子串、如何分解IP地址
【SQL开发实战技巧】系列(十一):拿几个案例讲讲translate|regexp_replace|listagg|wmsys.wm_concat|substr|regexp_substr常用函数
|
XML SQL Oracle
通过wm_concat 函数报错:ora06502-character string buffer to small浅谈wm_concat、Listagg、xmlagg函数的使用和结果不确定性
wm_concat、Listagg、XMLAGG ora06502-character string buffer to small varchar2类型最多支持4000字符(如果是中文会更短到2000) 那无论是wm_concat函数还是listagg函数,在处理超过4000字符(如果是中文会更短到2000)长度的时候都会报错,提供(xmlagg(xmlparse(content 合并字段||',' wellformed) order by 排序字段).getclobval() )给大家使用来解决此问题!
通过wm_concat 函数报错:ora06502-character string buffer to small浅谈wm_concat、Listagg、xmlagg函数的使用和结果不确定性
sql字符处理函数concat()、concat_ws()
concat(“字符串1”,“字符串2”,…,“字符串n”)无分隔符拼接一个或多个字符串
143 0
sql字符处理函数concat()、concat_ws()
|
关系型数据库 MySQL 数据库
MySql常用函数(逻辑判断,字符串处理,日期函数)FIND_IN_SET、IF、ISNULL、IFNULL、NULLIF、SUBSTR、SUBSTRING_INDEX、CONCAT、LENGTH
MySql常用函数(逻辑判断,字符串处理,日期函数)FIND_IN_SET、IF、ISNULL、IFNULL、NULLIF、SUBSTR、SUBSTRING_INDEX、CONCAT、LENGTH
MySql常用函数(逻辑判断,字符串处理,日期函数)FIND_IN_SET、IF、ISNULL、IFNULL、NULLIF、SUBSTR、SUBSTRING_INDEX、CONCAT、LENGTH
SQL中字符串截取函数(left、SUBSTRING)
SQL中字符串截取函数(left、SUBSTRING)
215 0