三、單行函式
阿新 • • 發佈:2020-08-26
型別:
number 數字函式
character 字元函式
date 日期函式
conversion 轉換函式
general 通用函式
1.字元函式(character)
1.1 大寫轉換函式
upper('string')--大寫STRING inicap('string')--首字母大寫String1.2 字串轉換函式
concat(Hello,'World') --HELLOWORLD substr('HelloWorld',1,5) --從第1個開始擷取,取5個字元 Hello length('HelloWorld') --字串長度 10 instr('HelloWorld2.數字函式(number)','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
round(45.926,2) --四捨五入保留2位小數 45.933.日期函式(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 日期常用的函式及其含義trunc(45.926,2) --保留2為小數,步四捨五入 45.92 mod(1600,300) --求餘數 100 round(45.926,-1) --負數表示個位四捨五入 50
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN'; MONTHS_BETWEEN('01-SEP-95','11-JAN-94') --3.2 日期 & 字串 的轉換(to_char & to_date) # to_date('string','轉換的日期格式')後減去前的月份 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
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 ninetyMM --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位數字 44564.2.3 to_date
select to_date('22-FEB-11') from dual; select to_date('2044-1-22','YYYY-MM-DD') from dual;