Oracle
一.字符函数
--大小写转换函数
1.LOWER (strexp)    返回字符串,并将所有的字符小写.
 select lower('ABCDE') from dual

--输出empbai8o表的姓名(小写)
select lower(ename) from emp;

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):  连接两个字符串 
--利用CONCAT函数输出员工的姓名
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

--输出员工表中first_name的长度
select length(first_name) from employees

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')
  1、必须用单引号括起来,并且是大小写敏感
  2、可包含任何有效的日期格式
  3、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;

--使用逆向思维:
   --字符的日期  2008-ari-15
    select to_char(sysdate,'yyyy-mon-dd') from dual
    
    --2008-may-19
    select to_date('2009-may-19','yyyy-mon-dd') from dual

--开发中
   --转化日期为字符输出
   select to_char(sysdate,'yyyy-mm-dd') from dual
   --转化字符为日期
   select to_date('2008-12-12','yyyy-mm-dd') from dual

6.TO_CHAR(number,'fmt'):是字符类型的函数,转化数字为字符
 --问题 3000.45转化这个数字为字符
  --使用 9  输出如下格式    3000.4500
    select to_char(3000.45,'99999999999.9999') from dual
    
  --使用0  输出如下格式    0003000.4500
   select to_char(3000.45,'000000000.000000') from dual

--增加美元符号  输出如下格式 $0003000.4500
   select to_char(3000.45,'$0000000.0000') from dual

--增加本地货币符号  输出如下格式 ¥0003000.4500
  select to_char(3000.45,'L0000000.0000') from dual
  select to_char(3000.45,'L99999999999.9999') from dual
  
  --增加千分位符号
 select to_char(3000.45,'99,999,999,999.9999') from dual
 select to_char(3000.45,'00,000,000,0000.0000') from dual

--使用to_number('字符',格式) --将字符转化为数字
     符合数字格式的字符
     转化的格式,等同to_char转化数字为字符的格式
  
  问题:'3000.45'--转化为数字
    select to_number('3000.45','0000.00') from dual
  
  问题:'$3000.45'--转化为数字
    select to_number('$3000.45','$0000.00') from dual   --3000.45

四.日期函数: 
     --计算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

--相差多少个月四舍五入到整数
      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
     
    --给出日期date和星期x之后计算下一个星期的日期 
    --使用NEXT_DAY(date,'day') 
    select next_day(to_date('2010-4月-01','yyyy-mon-dd'),'星期三') 
    from dual
  
    --计算指定日期所在月份的最后一天的日期
    --使用last_day(date)
    select last_day(to_date('2010-3月-01','yyyy-mon-dd'))
    from dual

五.其他函数

1.使用nvl函数实现:输出员工的姓名 月薪  提成  月收入
  select first_name,salary,commission_pct,salary(1+nvl(commission_pct,0))   from employees

2.NVL2(expr0,expr1,expr2)
  如果expr0不为Null,返回expr1, 为Null,返回expr2.  
  expr0可以为任何数据类型
--使用nvl2函数实现:输出员工的姓名 月薪  提成  月收入
select first_name,salary,commission_pct,nvl2(commission_pct,salary(1+commission_pct),salary) 
from employees

3.NULLIF(expr1,expr2)
   比较两个表达式,如果相等返回空值,如果不等返回第一个表达式
--使用NULLIF函数实现:比较first_name last_name的长度
  select first_name,last_name,nullif(length(first_name),length(last_name)) 
  from employees

4.COALESCE(expr1,expr2,...,exprn)
    返回表达式列表里的第一个非空表达式的值,表达式列表可以包含很多表达式,当第一个满足值非空时,返回这个表

达式的值。
     expr1,expr2,...,exprn的数据类型必须一致
--使用COALESCE函数:输出first_name,last_name,job_id和三个字段中非空表达式的值
select first_name,last_name,job_id,COALESCE(first_name,last_name,job_id) from employees
--
CASE expr 
  WHEN comparison_expr1 THEN return_expr1
  [WHEN comparison_expr2 THEN return_expr2
  WHEN comparison_exprn THEN return_exprn
  ELSE else_expr]
  END

需求:输出first_name,job_id,salary, 涨后的工资
           如果是'人力经理' 工资涨1%
           如果是'计划部经理' 工资涨2%
           如果是'秘书'     工资涨3%
           如果是'保安部经理'   工资涨4%
           其他的涨 5%
           
select first_name,job_id,salary,case job_id
                                  when '人力经理' then   salary(1+0.01) 
                                  when '计划部经理' then   salary(1+0.02)  
                                  when '秘书' then   salary(1+0.03)  
                                  when '保安部经理' then   salary(1+0.04)
                                  else    salary(1+0.05)
                                  end "涨后的工资"
from employees    
--
5.DECODE函数类似于一系列CASE 或 IF-THEN-ELSE 语句
   DECODE(col/expression, 
                  search1, result1 
                     [, search2, result2,...,]
                     [, default])
需求:输出first_name,job_id,salary, 涨后的工资
           如果是'人力经理' 工资涨1%
           如果是'计划部经理' 工资涨2%
           如果是'秘书'     工资涨3%
           如果是'保安部经理'   工资涨4%
           其他的涨 5%
           
 select first_name,job_id,salary,decode(job_id,
                                       '人力经理',salary(1+0.01),
                                       '计划部经理',salary(1+0.02),
                                       '秘书',salary(1+0.03),
                                       '保安部经理',salary(1+0.04),
                                        salary(1+0.05)
                                       ) "涨后的工资"
 from employees

oracle常用& to_date()怎么转换带am pm的时间格式的更多相关文章

  1. 问题:Oracle to_date;结果:oracle常用的时间格式转换

    oracle常用的时间格式转换 1:取得当前日期是本月的第几周 SQL> select to_char(sysdate,'YYYYMMDD W HH24:MI:SS') from dual; T ...

  2. oracle 常用知识积累

    一.  基本操作 1.  表操作 1.1 复制建表 create table test as select * from dept; --从已知表复制数据和结构 create table test a ...

  3. ORACLE常用数值函数、转换函数、字符串函数介绍

    ORACLE常用数值函数.转换函数.字符串函数介绍. 数值函数: abs(m) m的绝对值 mod(m,n) m被n除后的余数 power(m,n) m的n次方 round(m[,n]) m四舍五入至 ...

  4. Oracle 常用函数大全

    Oracle 11g 常用函数(Functions)详解 目录 ABS. 3 ACOS. 3 ADD_MONTHS. 4 ASCII 4 ASCIISTR. 5 ASIN.. 5 ATAN.. 5 A ...

  5. Oracle常用命令大全(很有用,做笔记)

    一.ORACLE的启动和关闭 1.在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a.启动ORACLE系统 oracle>svrmgrl ...

  6. Oracle常用语法

    Oracle常用语句语法汇总 Oracle10g 1 第一章Oracle命令 a) 系统管理员连接 conn */* as sysdba b) 查询当前用户 show user c) 创建新用户 cr ...

  7. Oracle常用函数

    前一段时间学习Oracle 时做的学习笔记,整理了一下,下面是分享的Oracle常用函数的部分笔记,以后还会分享其他部分的笔记,请大家批评指正. 1.Oracle 数据库中的to_date()函数的使 ...

  8. Oracle常用SQL查询(2)

    三.查看数据库的SQL 1 .查看表空间的名称及大小 select  t.tablespace_name,  round ( sum (bytes / ( 1024 * 1024 )), 0 ) ts ...

  9. Oracle常用语句集合

    oracle常用经典SQL查询 常用SQL查询: .查看表空间的名称及大小 )),) ts_size from dba_tablespaces t, dba_data_files d where t. ...

随机推荐

  1. BZOJ.3990.[SDOI2015]排序(DFS)

    题目链接 操作序列的顺序显然是无关的,所以只需按特定顺序求出一个长度为\(l\)的操作序列,它对答案的贡献为\(l!\). 我们从小到大枚举所有选择.若当前为第\(i\)个,如果有一段长度为\(2^i ...

  2. @Transactional导致无法动态数据源切换

    公司目前数据源为主从模式:主库可读写,从库只负责读.使用spring-jdbc提供的AbstractRoutingDataSource结合ThreadLocal存储key,实现数据源动态切换. 最近项 ...

  3. H5在Android 4.4中WebView兼容性问题

    项目中使用到了Vue.YDUI.webpack,部分页面在Android WebView中出现了样式问题,卡顿等等: 1.promise不识别——需要使用babel-polyfill. 2.由于系统限 ...

  4. CAP原则(CAP定理)、BASE理论

    CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...

  5. node部署静态页面;node上线静态页面

    node部署静态页面上线 静态页面上线可以采用 nginx, tomcat或者node ,我们这里介绍下node部署静态页面 这里采用最简单的上线方式,我们就不用node + express + ej ...

  6. Fiddler 实现手机的抓包

    Fiddler是我最喜爱的工具,几乎每天都用, 我已经用了8年了. 至今我也只学会其中大概50%的功能. Fiddler绝对称得上是"神器", 任何一个搞IT的人都得着的. 小弟我 ...

  7. Python 訪问 LinkedIn (API)

    CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-8-16 @author: guaguastd @name: l ...

  8. [Winform]关于cefsharp触屏设备长按文本内容,崩溃问题的修复

    摘要 在之前遇到cefsharp,在触屏电脑上,长按文本内容,会崩溃的问题. 相关文章 当时遇到这样的问题,在cefsharp项目下提交了bug.已经修复,可以参考当时我提的bug,以及解决过程,可参 ...

  9. layoutSubviews 在什么情况下会被触发

    layoutSubviews在以下情况下会被调用: 1.init初始化不会触发layoutSubviews 2.addSubview会触发layoutSubviews 3.设置view的Frame会触 ...

  10. C#编程(四十六)----------正则表达式

    正则表达式 1.定义一个Regex类的实例 Regex regex=new Regex(“”); 这里初始化参数就是一个正则表达式,”\d”表示配置数字 2.判断是否匹配 判断一个字符串,是否匹配一个 ...