1. 程式人生 > 實用技巧 >三、單行函式

三、單行函式

有道雲連結

型別: number 數字函式 character 字元函式 date 日期函式 conversion 轉換函式 general 通用函式 1.字元函式(character) 1.1 大寫轉換函式
upper('string')--大寫STRING
inicap('string')--首字母大寫String
1.2 字串轉換函式
concat(Hello,'World') --HELLOWORLD
substr('HelloWorld',1,5) --從第1個開始擷取,取5個字元 Hello
length('HelloWorld') --字串長度 10
instr('HelloWorld
','W') --取'W'的位置 6 Lpad(salary,5,'*') --在左L補齊5個* *****24000 Rpad(salary,5,'*') --在右R補齊5個* *****24000 trim('H' from 'HelloWorld') --trim用法1:從HelloWorld中去除H elloWorld trim('HelloWorld') --trim用法2:去除兩邊的空格 trim('Hello World') --中間的空格沒辦法去除 Hello World
2.數字函式(number)
round(45.926,2) --四捨五入保留2位小數  45.93
trunc(45.926,2) --保留2為小數,步四捨五入 45.92 mod(1600,300) --求餘數 100 round(45.926,-1) --負數表示個位四捨五入 50
3.日期函式(date) 格式: YYYY-MM-DD YYYY-MM-DD HH24:MI:SS YYYY-MM-DD HH:MI:SS DD-MMM-RR DD-MMM-YY MM-DD-YYYY 3.1 日期常用的函式及其含義
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
MONTHS_BETWEEN('01-SEP-95','11-JAN-94') --
後減去前的月份 19.6774193548387 ADD_MONTHS('11-JAN-95',6) --加上6個月 NEXT_DAY('01-SEP-95','FRIDAY') --1995-9-1 第一個週五 1995/9/8 NEXT_DAY('01-SEP-95',1) --下一週的第一天 即第一個週日 1995/9/3 NEXT_DAY(TO_DATE('1995-9-1'),'YYYY-MM-DD',1) --1995/9/3 LAST_DAY('01-FEB-95') --2月最後一天 1995/2/28 ROUND(TO_DATE('25-JUL-95'),'MONTH') --對月份四捨五入,15日後五入 1995/8/1 ROUND(TO_DATE('25-JUL-95'),'YEAR') --對年份 四捨五入 1996/7/1 TRUNC(TO_DATE('25-JUL-95'),'MONTH') --日歸1 1995/7/1 TRUNC(TO_DATE('25-JUL-95'),'YEAR') --日月歸1 1995/1/1
3.2 日期 & 字串 的轉換(to_char & to_date) # to_date('string','轉換的日期格式')
select to_date('25-jul-91') from dual; --1991/7/25
# to_char
select to_char(sysdate,'YYYY/MM/DD HH:MI:SS') from dual;
一些格式的含義: YYYY --4位數字 年份 YEAR --英文描述年份
select to_char(to_date('17-SEP-90'),'YEAR') from dual;--Nineteen ninety
MM --2位數字月份 MONTH --英文描述月份 MON --3位英文縮寫月份 DD --2位數字日期 DAY --英文星期幾 DY --3位英文星期幾 HH24:MI:SS --時分秒格式化 DDspth --英文月中第幾天 fm --格式化關鍵字,可選
SELECT last_name,to_char(hire_date,'fmDD "of" Month YYYY') AS HIREDATE
FROM EMPLOYEES;
SELECT TO_CHAR(SYSDATE,'FMDD') FROM DUAL; --26
# 日期的運算
SELECT LAST_NAME,(SYSDATE_HIRE_DATE)/7 AS WEEK,
       SYSDATE+1 AS TOMORROW,
       HIRE_DATE+ 8/24
FROM EMPLOYEES
WHERE DEPARTMENT_ID=90;     
4.轉換函式(conversion):隱式轉換 & 自寫轉換函式 4.1 隱式轉換 4.1.1 賦值轉換 varchar2/char => number varchar2/char => date number => varchar2 date => varchar2 4.1.2 表示式比較操作只能 varchar2/char => number varchar2/char => date date結果為英文月份縮寫3位 4.2 顯式轉換 4.2.1 to_char (number,'格式') 9 --表示1個數字 0 --強制顯示為0 $ --放一個美元符號 L --使用符號本地幣種符號 . --顯示一個小數點佔位符 , --顯示一個千分位佔位符
--例子
select to_char(salary,'L99,999.00') salary
from employees
where last_name='Ernst';
--更改本地幣種
alter session set NSL_CURRENCY='$';
4.2.2 to_number
--例子
select to_number('4456') from dual; --4456
select to_number('$4,456','$9,999') from dual; --去掉','、'$',4位數字  4456
4.2.3 to_date
select to_date('22-FEB-11') from dual;
select to_date('2044-1-22','YYYY-MM-DD') from dual;