程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> PLSQL_基礎系列8_操作符標LPAD / TRUNC / DECODE / TRIM / INSTR,plsqllpad

PLSQL_基礎系列8_操作符標LPAD / TRUNC / DECODE / TRIM / INSTR,plsqllpad

編輯:Oracle教程

PLSQL_基礎系列8_操作符標LPAD / TRUNC / DECODE / TRIM / INSTR,plsqllpad


2014-12-09 BaoXinjian

一、字符函數


1. LOWER (strexp) - 返回字符串,並將所有的字符小寫.

select lower('ABCDE') from dual

 

2. UPPER (strexp)     返回字符串,並將所有的字符大寫.

select upper('abcdf') from dual

 

3.INITCAP(strexp)    將字符串的(每個單詞的)第一個字母變為大寫,後面的小寫;

select initcap(' source fore') from dual

select initcap(' SOURCE FORE') from dual   -- Source Fore(如果都是大寫會自動將第一個字母變為大寫其他的小寫)

 

4.CONCAT(strexp, strexp):  連接兩個字符串

select concat(first_name,last_name) from employees

 

5.substr(str,start_index,length): 從指定的位置截取指定長度的字符串

select substr('abcdefg',2,3) from dual

 

6.LENGTH(strexp):返回字符串的長度

select length('abcdef') from dual

 

7.INSTR(C1,C2,I,J): 在一個字符串中搜索指定的字符,返回發現指定的字符的位置;

C1:搜索的字符

C2:要搜索的字符

I:表示從哪個位置開始查找

J:查找第幾次出現

select instr('aborcdoryuklhorp','or',1,2) from dual  ---7
select instr('aborcdoryuklhorp','or',6,2) from dual  ---14   

 

8.LPAD( string1, padded_length, [ pad_string ] )   在列的左邊粘貼字符

select lpad('acd',8) from dual

 

9.RPAD(粘貼字符)    RPAD? 在列的右邊粘貼字符

select rpad('acd',8,'') from dual

select rpad('acdefghijklm',8,'') from dual

 

10.trim(str):截取字符串兩端特殊字符

select   '  abd   '   from dual

select   trim('  abd   ')   from dual  

 

11.replace(str,search_str[,replace_str]): 將每次在str中出現的search_str用replace_str替換

select replace('HELOVEYOU','HE','I') from dual

 

二、數學函數


1.round:傳回一個數值,該數值是按照指定的小數位數進行四捨五入運算的結果。

select round(3000.926) from dual  --3001

--小數部分是兩位

select round(3000.926,2) from dual  --3000.93

 

2.TRUNC函數返回處理後的數值,其工作機制與ROUND函數極為類似,

--只是該函數不對指定小數前或後的部分做相應捨入選擇處理,而統統截去。

select trunc(3000.926) from dual   --3000

select trunc(3000.926,2) from dual  --3000.92

 

3.mod(number1,number2)兩個數值相除並返回其余數。運算符執行 number1 除以 number2 操作

select mod(1600,300) from dual   --100

 

三、轉化函數


1.TO_CHAR(date,'fmt') : 是字符類型的函數,轉化日期為字符格式('fmt')

  • 必須用單引號括起來,並且是大小寫敏感
  • 可包含任何有效的日期格式
  • fmt值的寬度正好能容納所有的有效數字

 

2.修改當前的語言環境為中文

alter session set nls_language='SIMPLIFIED CHINESE'

 

--輸入當前的系統日期,格式為 yyyy-mm-dd
select sysdate from dual
select to_char(sysdate,'yyyy-mm-dd') from dual

--輸入當前的系統日期,格式為 yyyy-mon-dd
select to_char(sysdate,'yyyy-mon-dd') from dual

--輸入當前的系統日期,格式為 yyyy-month-dd
select to_char(sysdate,'yyyy-month-dd') from dual

--輸入當前的系統日期,格式為 yyyy-mon-dd-day
select to_char(sysdate,'yyyy-mon-dd day') from dual

--輸入當前的系統日期,格式為 yyyy-mon-dd-dy
select to_char(sysdate,'yyyy-mon-dd-dy') from dual

--輸入當前的系統日期,格式為 yyyy-mon-dd-dy-d
select to_char(sysdate,'yyyy/mon/dd/dy/d') from dual

--ddspth 日期的英文顯示
--輸入當前的系統日期,格式為 yyyy-mon-ddspth
select to_char(sysdate,'yyyy-mon-ddspth') from dual  --2010-4月 -seventeenth

 

3.修改為英文環境(此語句只對當前的窗口有效,當窗口關閉虛重新設置)

alter session set nls_language=AMERICAN;
--輸入當前的系統日期,格式為 yyyy-mm-dd
select to_char(sysdate,'yyyy-mm-dd') from dual
--輸入當前的系統日期,格式為 yyyy-mon-dd select to_char(sysdate,'yyyy-mon-dd') from dual --2010-apr-17 --輸入當前的系統日期,格式為 YYYY-MON-DD select to_char(sysdate,'yyyy-MON-dd') from dual --2010-APR-17 --輸入當前的系統日期,格式為 YYYY-MONTH-DD select to_char(sysdate,'YYYY-MONTH-DD') from dual
--輸入當前的系統日期,格式為 yyyy-mon-dd-day select to_char(sysdate,'yyyy-mon-dd-day') from dual select to_char(sysdate,'yyyy-mon-dd-DAY') from dual --2010-apr-17-SATURDAY --輸入當前的系統日期,格式為 yyyy-mon-dd-dy select to_char(sysdate,'yyyy-mon-dd-dy') from dual --2010-apr-17-sat select to_char(sysdate,'yyyy-mon-dd-DY') from dual --2010-apr-17-SAT

 

4.ddspth 不分中英文環境 日期的英文顯示

--輸入當前的系統日期,格式為 yyyy-mon-ddspth
select to_char(sysdate,'yyyy-mon-ddspth') from dual  --2010-apr-seventeenth

--小時 分 秒
--輸入當前的系統日期,格式為 yyyy-mon-dd HH24:MI:SS
select to_char(sysdate,'yyyy-mon-dd HH24:MI:SS') from dual

--輸入當前的系統日期,格式為 dd-mon-yyyy SS:HH24:MI(格式沒有順序)
--注意:使用to_char函數轉化日期--->字符 格式沒有順序
select to_char(sysdate,'dd-mon-yyyy SS:HH24:MI') from dual

--輸入當前的系統日期,格式為 yyyy-mon-dd HH24:MI:SS AM(PM)
--增加AM PM  --在這個格式中AM PM沒有區別 ,表達的含義是一致的
  select to_char(sysdate,'yyyy-mon-dd HH24:MI:SS AM') from dual
  select to_char(sysdate,'yyyy-mon-dd HH24:MI:SS PM') from dual
  select to_char(sysdate,'yyyy-mon-dd HH24:MI:SS PM') from dual
--輸入當前的系統日期,格式為 dd of month (19 of 1月) --可以在格式中增加字符串,字符串用""引起來 select to_char(sysdate,'dd of month ') from dual

 

5.to_date(char,fmt)  轉化字符為日期

第一個參數:符合日期格式的字符
第二個參數:格式(同to_char函數轉化日期的格式)

alter session set nls_language='SIMPLIFIED CHINESE'
alter session set nls_language=AMERICAN;
--轉化2008-04月-18這個字符為日期 select to_date('2008-4月-18','yyyy-mon-dd') from dual; select to_date('4月-18-2008','mon-dd-yyyy') from dual;

 

6.TO_CHAR(number,'fmt'):是字符類型的函數,轉化數字為字符

 

四、日期函數


1. 計算2008-4月-1日和2008-8月-10日相差多少個月--使用months_between(date1,date2)函數

select months_between(to_date('2008-4月-01','yyyy-mon-dd'),to_date('2008-8月-10','yyyy-mon-dd'))
from dual
select months_between(to_date('2008-8月-10','yyyy-mon-dd'),to_date('2008-4月-01','yyyy-mon-dd')) from dual

 

2. 相差多少個月四捨五入到整數

select round(months_between(to_date('2008-8月-10','yyyy-mon-dd'),to_date('2008-4月-01','yyyy-mon-dd')))from dual
--給出日期2008-4月-01  計算六個月後的日期

--使用Add_months(date1,number)
select add_months(to_date('2008-4月-01','yyyy-mon-dd'),6) from dual

 

3. 給出日期date和星期x之後計算下一個星期的日期--使用NEXT_DAY(date,'day')

select next_day(to_date('2010-4月-01','yyyy-mon-dd'),'星期三') from dual

 

4. 計算指定日期所在月份的最後一天的日期--使用last_day(date)

select last_day(to_date('2010-3月-01','yyyy-mon-dd')) from dual

 

Thanks and Regards

參考: http://blog.163.com/jd_wangchunhe/blog/static/89945993201031915124106/

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved