SQL> --字符函数
SQL> select lower('hellO WORld') 转小写,upper('hellO WORld') 转大写,initcap('hello world') 首字母大写
2 from dual;
转小写 转大写 首字母大写
----------- ----------- -----------
hello world HELLO WORLD Hello World
SQL> host cls
SQL> --substr(a,b) 从a中,第b位开始取,取右边所有的字符
SQL> select substr('Hello World',4) from dual;
SUBSTR('
--------
lo World
SQL> --substr(a,b,c) 从a中,第b位开始取,取c位
SQL> select substr('Hello World',4,4) from dual;
SUBS
----
lo W
SQL> host cls
SQL> --length 字符数 lengthb 字节数
SQL> select length('Hello World') 字符数, lengthb('Hello World') 字节数
2 from dual;
字符数 字节数
---------- ----------
11 11
SQL> ed
已写入 file afiedt.buf
1 select length('北京') 字符数, lengthb('北京') 字节数
2* from dual
SQL> /
字符数 字节数
---------- ----------
2 4
SQL> host cls
SQL> --instr 在母串中查找子串,找到返回下标(从1开始),否则返回0
SQL> select instr('Hello World','ll') from dual;
INSTR('HELLOWORLD','LL')
------------------------
3
SQL> host cls
SQL> --lpad 左填充 rpad 右填充
SQL> select lpad('abcd',10,'*') 左,rpad('abcd',10,'*') 右
2 from dual;
左 右
---------- ----------
******abcd abcd******
SQL> host cls
SQL> --trim 去掉前后指定的字符
SQL> select trim('H' from 'Hello WorldH') from dual;
TRIM('H'FR
----------
ello World
SQL>
select replace('Hello World','l','*') from dual;
REPLACE('HE
-----------
He**o Wor*d
SQL> host cls
SQL> --数字函数
SQL> select ROUND(45.926, 2) 一,ROUND(45.926, 1) 二, ROUND(45.926, 0) 三
2 ROUND(45.926, -1) 四, ROUND(45.926, -2) 五
3 from dual;
ROUND(45.926, -1) 四, ROUND(45.926, -2) 五
*
第 2 行出现错误:
ORA-00923: 未找到要求的 FROM 关键字
SQL> ed
已写入 file afiedt.buf
1 select ROUND(45.926, 2) 一,ROUND(45.926, 1) 二, ROUND(45.926, 0) 三,
2 ROUND(45.926, -1) 四, ROUND(45.926, -2) 五
3* from dual
SQL> /
一 二 三 四 五
---------- ---------- ---------- ---------- ----------
45.93 45.9 46 50 0
SQL> ed
已写入 file afiedt.buf
1 select TRUNC(45.926, 2) 一,TRUNC(45.926, 1) 二, TRUNC(45.926, 0) 三,
2 TRUNC(45.926, -1) 四, TRUNC(45.926, -2) 五
3* from dual
SQL> /
一 二 三 四 五
---------- ---------- ---------- ---------- ----------
45.92 45.9 45 40 0
SQL> host cls
SQL> --日期函数
SQL> select sysdate from dual;
SYSDATE
--------------
22-10月-12
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual
2 ;
TO_CHAR(SYSDATE,'YY
-------------------
2012-10-22 15:39:21
SQL> select systimestamp from dual;
SYSTIMESTAMP
---------------------------------------------------------------------------
22-10月-12 03.40.05.406000 下午 +08:00
SQL> host cls
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,'YY
-------------------
2012-10-22 15:40:33
SQL> select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss*ff') from dual;
TO_CHAR(SYSTIMESTAMP,'YYYY-MM
-----------------------------
2012-10-22 15:40:47*218000
SQL> --systimestamp时间戳
SQL> --昨天 今天 明天
SQL> select (sysdate-1) 昨天, sysdate 今天, (sysdate+1) 明天 from dual;
昨天 今天 明天
-------------- -------------
Oracle学习(三):单行函数(二)
DENT' then sal+1000
2 when 'MANAGER' then sal+800
3 else sal+400
4 end 涨后薪水
5 from emp;
SQL> --decode:功能和case一样,第一个参数为表达式,之后每两个为一对:条件,值;最后一个为缺省值,相当于else的值
SQL> select ename,job,sal 涨前薪水,decode(job,'PRESIDENT',sal+1000,
2 'MANAGER', sal+800,
3 sal+400)涨后薪水
4 from emp;
2.在Sqlplus下实际执行的结果录屏: