--首字母大写,小写,大写
select initcap(rowid)from otest
select lower(rowid)from otest
select upper(rowid)from otest
--合并列 concat(a,b)
select orderno || job || tid from otest
select concat(orderno,job)from otest
select concat('hello ','world')合并from dual
--字符串截取
--从第2位开始取,到结尾
select substr(orderno,2)from otestwhere orderno =888
--从第3位开始取,取5位
select substr('hello world',3,5)from dual
--instr(a,b),返回字符所在位置,不存在返回0
select instr(orderno,2)位置from otest
--字符长度,字节长度
select length(orderno)字符长度from otest--3
select length(job)字符长度from otest --2
select lengthb(orderno)字节长度from otest--3
select lengthb(job)字节长度from otest--6
select length('北京'),lengthb('北京')from dual--2 6
--lpad左填充rpad右填充(字符,位数,不足位补齐字符)
select lpad('abc',5,'*')left,rpad('abc',5,'+')right from dual
--trim去掉前后指定字符--注意trim关键词from
select trim('h' from 'hello olleh')from dual
--replace(操作物,替换谁,替换为) --替换字符函数
select replace('hello olleh','l','x')from dual
--四舍五入 round(小数,保留位数)
select round(45.625,2)one,round(45.625,1)two,
round(45.625,0) three,round(45.625,-1),round(45.625,-2)from dual
--截断trunc(小数,保留截断位数)
select trunc(45.625,2)one,trunc(45.625,1)two,
trunc(45.625,0) three,trunc(45.625,-1),trunc(45.625,-2)from dual
--求余mod(除数,被除数)
select mod(1600,300)余数from dual
--当前日期sysdate
select sysdate from dual
--利用to_char的日期转换
/*日期格式:
格式 表示 例如
YYYY 数字年 2017
YEAR 英文年 twenty seventeen
MM 二位月 05
MONTH 全称月 4月
DD 二位日 02
DY/DAY 星期 星期一
HH12/24 小时制 12/24
MI 分钟 0-59
SS 秒 0-59
*/
select to_char(sysdate,'yyyy-mm-dd dy hh24:mi:ss')时间日期from dual
--日期不能加日期没有意义,但可以减日期。日期可以加减数字表示前后天数
select (sysdate+sysdate)time from dual--报错:Date cannot be dated
select (sysdate-sysdate)time from dual
select (sysdate-1)昨天,(sysdate+1)明天from dual
--日期差months_between(a,b)
select months_between(sysdate,(sysdate-31))相差from dual
--指定日期加月数add_months(a,b)
select add_months(sysdate,5)from dual
--指定日期的下个日期next_day
/*next_day可应用于自动备份数据;异地容灾
1.分布式数据库 同步、更新、备份
2.快照 触发器的运用*/
select next_day(sysdate,'星期一')from dual
--本月最后一天last_day
select last_day(sysdate)from dual
--日期的四舍五入round(a,b)
--日期的截断trunc(a,b)和数字的用法相同,以日期一半划分
--日期格式中有字符串要用双引号括起来
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss "今天是"day')from dual
--货币的表示,数字格式转换
/*数字格式
表示 含义
9 数字
0 零
$ 美元
L 本地货币
. 小数点
, 千位符
*/
--查询薪水 要求保留两位,千位符,货币代码表示
select to_char(orderno,'L9,999.99')from otest
--字符转数字to_number(字符,数字格式)
select to_number('123','999')from dual
--字符转日期to_date(字符,日期格式)
select to_date('2017-05-21','yyyy-mm-dd')from dual
--查看默认格式语句
select *from V$nls_Parameters
--默认日期格式为:DD-MON-RR
--修改默认日期格式
alter session set NLS_DATE_FORMAT = 'yyyy-mm-dd'
--nvl(a,b)当a为null返回b
--nvl(a,b,c)当a为null返回c,否则返回b
--nullif(a,b)当a=b时,返回null,否则返回a
--coalesce(a,b,...,n)从左到右找到第一个不为null的值
--条件表达式
/*在SQL语句中使用IF-THEN-ELSE逻辑
两种方法:
CASE表达式:SQL99语法,类似于Basic,比较繁琐
DECODE函数:Oracle自己的语法,类似Java,比较简洁
*/
--CASE语句
CASE exprWHEN comparison_expr1THEN return_expr1
WHEN comparison_expr2THEN return_expr2
WHEN comparison_exprnTHEN return_exprn
ELSE else_expr
END
--DECODE函数
DECODE(expr,comparison_expr1,return_expr1,
comparison_expr2,return_expr2,
comparison_exprn,return_exprn,
else_expr)
全文根据数据库实际编写摘录,需读者掌握基本建表。感谢您的支持与收藏,谢谢!