數據庫03-函數

20200225html

1、單行函數

一、字符函數

大小寫控制函數:lower(),upper(),initcap()函數

select lower('HELLO') from dual;    把臨時表中的字符HELLO轉換成小寫編碼

lower(),upper(),initcap() 改變的是每一個單詞orm

select upper('歡迎welcome to 中國china') from dual;htm


 

二、字符控制函數

concat()鏈接函數blog

select concat(ename,job) from emp;字符串

select ename || job from emp;get

substr()截取函數博客

select sustr('hello,world',1,5) form dual;  從hello,world字符串的第一位開始截取,截取長度爲5,返回helloit

length() 字符長度函數

select length('hello,world') form dual;  讀取字符串的長度

lpad/rpad 字符左/右填充函數

select empno,lpad(ename,10,'*') from emp; 位數不夠時,執行截取功能


 

trim()首尾截斷函數

select trim(' aa bb ') from dual; 去除首尾的空格,中間空格保留

select ltrim('  aa bb ') from dual; 去除首(左邊開始)的空格(此寫法只可去掉空格),其他空格保留

trim(leading|trailing|both) 去掉前面|後面|先後

select ename,trim('A' from ename) from emp;去掉ename字符首尾中的A,什麼都不寫,默認爲both

select trim(trailing  'a' from 'aadfaa  aasda') from dual;  返回字符串'aadfaa aasd'

trim中截取的值,只能爲一個字符


 

select ltrim('aabbccddaabb','ab') from dual;  從字符串的左邊 去除 a和b的字符,若是沒有則返回原字符


 

instr()查找函數

select ename,instr(ename,'BE') from emp; 查找ename中含有字符BE的,並返回首次出現的位置

select instr('hello world','or',5) from dual;

select instr('hello world','o',1,1) from dual;返回第一次出現第一個o的位置

select instr('hello world','o',1,2) from dual;返回第一次出現第2個o的位置

select ename from emp where ename not like '%R%';   查詢姓名中不帶有R的員工姓名

select ename from emp where instr(ename,'R')=0;        查詢姓名中不帶有R的員工姓名

replace()單個字符替換

replace(值,str1,str2) 將值中的str1替換爲str2

select ename,replace(ename,'A','a') from emp;將姓名中的A都替換爲a

translate()多個字符替換

比replace更佔用空間

select ename,translate(ename,'AS','as') from emp; 將姓名中的A替換爲a,S替換爲s

select ename,translate(ename,'AS','a') from emp; 將姓名中的A替換爲a,S去掉

周杰倫→**倫,把最後一個字前面的字都提取出來,而後用*去替換掉

select translate('周杰倫',substr('周杰倫',1,length('周杰倫')-1),'********') from dual;    //**倫

select translate('成龍',substr('成龍',1,length('成龍')-1),'********') from dual;    //**龍

select translate('布萊恩特',substr('布萊恩特',1,length('布萊恩特')-1),'********') from dual;    //***特

三、數字函數

round()四捨五入函數、trunc()截斷函數、mod()求餘函數

round(45.926,2)=45.93        round(45.926,-1)=50

trunc(45.926,2)=45.92          trunc(45.926,-1)=40

mod(10,3)=1(10/3=3......1)

四、日期函數

sysdate返回當前日期

日期-數字=日期           日期+數字=日期          日期-日期=數字(間隔天數)

months_between返回兩個日期間隔的月數

select months_between(sysdate,hiredate) from emp查詢每一個員工入職的月數

add_months(sysdate,2) 返回當前日期+2月後的日期

next_day(sysdate,'星期一')返回當前日期後的下個星期一的日期,星期幾怎麼書寫須要視當前的字符編碼集,中文則輸入星期幾,英文則輸入monday等。

last_day(sysdate) 返回當前日期所在月份的最後一天

select last_day('01-2月-2008'),last_day(sysdate) from dual;   //29-2月 -08      29-2月 -20

五、轉換函數

to_number()把其餘類型轉換成數字,目前已實現自動轉換 不需使用函數

select 1+1,'1'+1 from dual;       //2   2

to_date()把其餘類型轉換成日期

select to_date('2020-02-25','yyyy-mm-dd') from dual;   //25-2月 -20

to_char()把其餘類型轉換成字符串

select to_char(sysdate,'yyyy"年"mm"月"dd"日"') from dual;   //2020-02-25

把當前日期轉換成年月日的中文格式:

select to_char(sysdate,'yyyy"年"mm"月"dd"日"') from dual;   //2020年02月25日

select to_char(sysdate,'yyyy')||'年'||to_number(to_char(sysdate,'mm'))||'月'||to_number(to_char(sysdate,'dd'))||'日' from dual;     //2020年02月25日

注:字符串當中,存在 自定義的字符信息的時候,須要使用雙引號 標記那些 直接顯示 而不須要額外處理的字符

select to_char(sysdate,'fmyyyy"年"mm"月"dd"日"') from dual;   //2020年2月25日,fm去除前導0

select to_char(sysdate,'fmyyyy-mm-dd hh24:mi:ss am') from dual;   //2020-2-25 16:20:58 下午

select to_char(sysdate,'fmyyyy-mm-dd am hh24:mi') from dual;   //2020-2-25下午16:20:58

 

美圓按照默認格式,會將¥放到數額前面;其餘貨幣是外掛上去的,會按照定義格式寫

select ename,to_char(sal,'99,999$'),to_char(sal,'99,999L') from emp; //KOBE $4,000 4,000¥

select ename,to_char(sal,'99g999$'),to_char(sal,'99G999L') from emp;//KOBE $4,000 4,000¥

 

select add_months(sysdate,1) from dual;         //當前日期+1月

select sysdate,sysdate+7 from dual;         //當前日期+1周

select sysdate,sysdate+1 from dual;         //當前日期+1天

select sysdate,to_char(sysdate+1/24,'yyyy-mm-dd am hh24:mi:ss') from dual;   //當前日期+1時

select to_char(sysdate+1/24/60,'yyyy-mm-dd am hh24:mi:ss') from dual;     //當前日期+1分

select to_char(sysdate+1/24/60/60,'yyyy-mm-dd am hh24:mi:ss') from dual;   //當前日期+1秒

select to_char(sysdate,'yyyy"年"mm"月"dd"日" "第"W"周"') from dual;  //2020年02月25日 第4周

select to_char(sysdate,'d'),to_char(sysdate,'day'),to_char(sysdate,'w') from dual; //d表示今天是本週的第幾天(週日是第一天),day表示今天是星期幾,w表示這是本月的第幾周。

 

做者:kerwin-chyl

文章連接:https:////www.cnblogs.com/kerwin-chyl

本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。

相關文章
相關標籤/搜索