- 函数rpad和lpad
向C1列左边添加0达到长度3 | select lpad(C1,3,'0') FROM TEST; |
---|---|
向c1列右边添加0达到长度3 | select rpad(C1,3,'0') FROM TEST; |
- 函数ltrim和rtrim
删除传入值左侧的空格 | SELECT LTRIM(' ABCDEFG') LTRIM FROM DUAL; |
---|---|
删除传入值右侧的空格 | SELECT RTRIM('ABCDEFG ') LTRIM FROM DUAL |
- varchar2和char的区别
varchar2 | char |
---|---|
对空格敏感 | 对空格不敏感 |
- varchar2和varchar的区别:
如果ANSI对varchar类型定义有变化,oracle varchar2类型不变
varchar2 | varchar |
---|---|
由oracle定义 | 由ANSI定义 |
-
to_char
select to_char(BASE_COST,'L99.99') from COST;
使用默认货币,并且以99.99(9.5还是显示成9.5)的格式显示BASE_COST
select to_char(BASE_COST,'L00.00') from COST;
使用默认货币,并且以00.00(9.5会补成09.50)的格式显示BASE_COST
select to_char(BASE_COST,'$99.99') from COST;
使用$货币,并且以99.99(9.5还是显示成9.5)的格式显示BASE_COST.
select BASE_COST,nvl(to_char(UNIT_COST,'0.0000'),to_char('no unit csot')) from COST;
注意,tochar中0.0000中小数点之前只能是0不能是9,当它是9时,数据时0会省略小数点之前的0.
select to_char(sysdate,'month')from dual;
显示当前月份 -
日期的运算
select sysdate+1 from dual;
1的单位是天
select sysdate+1/24/60*10 from dual;
同select sysdate+10/24/60 from dual;
显示10分钟之后
select sysdate+1-sysdate from dual;
当然,结果是1,number类型
select LOGIN_NAME,ltrim(trunc(sysdate-CREATE_DATE)) z from ACCOUNT order by z desc ;
根据信息,可以知道第二行返回值是抹掉天数的位数的建号天数. -
日期函数
months_between | 两个日期之间相差多少个月 |
---|---|
add_months | 一个日期加减一个月 |
next_day | 根据参数,出现的下一个日期(星期几) |
last_day | 同一个月的最后一天 |
select add_months(sysdate,1) from dual;
一个月之后,一个月可能有28,30天,所有这个函数还是有用的.返回date
select months_between(sysdate,to_date('2000-1-1','yyyy-mm-dd')) from dual;
同上有用,返回number,差多少个月
select last_day(sysdate) from dual;
同上有用,返回当前这个月的最后一天的date.
select next_day(sysdate,1) from dual;
返回下一个星期日的date.
-
SQL语句中的分支
分支表达式case when
分支函数decode
select BASE_DURATION,case when BASE_DURATION=20 then UNIT_COST+0.05 when BASE_DURATION=40 then UNIT_COST+0.03 else UNIT_COST end new_name from COST;
case when…when…else…end
如果没有else则会使其他值返回null. -
decode函数
decode(value,if1,then1,if2,then2,if3,then3,…else),表示如果value等于if1时,decode函数返回值是then1,…,如果不等于任何一个if值,则返回else,前面都不是而且没有else则返回null
select name,decode(BASE_DURATION,20,UNIT_COST+0.04, 40 ,UNIT_COST+0.03,UNIT_COST) un from cost;
-
sbustr函数
select substr(REAL_NAME,1,2),REAL_NAME from ACCOUNT;
求子串,返回值是从第一个字开始,持续2个字符. -
concat函数
select concat(REAL_NAME,IDCARD_NO) from ACCOUNT;
拼接函数,将REAL_NAME和IDCARD_NO拼接,相当于||
单行函数
- 字符函数
length upper lower initcap ltrim rtrim lpad rpad substr concat - 数值函数
round trunc - 日期函数
add_months months_between next_day last_day - 转换函数
to_date to_char to_number - 一般函数
nvl decode
表达式
- 算术表达式 ±*/
- 字符表达式 拼接||
- 日期表达式 日期加减数字 两个日期相减
- 条件表达式 case when