日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Oracle从零开始04——SQL语句03——单行函数

發布時間:2025/4/5 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle从零开始04——SQL语句03——单行函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

5.單行函數

function_name(column|expression,[arg1,arg2,…])

參數說明:function_name:函數名稱

column:數據庫列名

expression:字符串或計算表達式

arg1,arg2:在函數中使用參數

?

1)字符函數

接受字符輸入并返回字符或數值

?

a)小寫變大寫UPPER()

如:SELECT UPPER('smith') FROM dual;

如用戶查找時不會考慮姓名是大寫還是小寫,所以在查詢語句中為了方便就可以使用upper函數:

SELECT* FROM emp WHERE ename = UPPER('Smith') ;

?

b)大寫變小寫LOWER()

如:SELECT LOWER ('HELLO WORLD') FROM dual;

?

c)首字母大寫INITCAP()

如:SELECT INITCAP ('HELLO WORLD') FROM dual;

如將雇員表中的雇員姓名變為首字母大寫:

SELECT INITCAP (ename) FROM emp;

?

d)字符串連接CONCAT()

但是此種方式不如||好用

如:SELECT CONCAT ('hello','world') FROM dual;

?

e)字符串截取SUBSTR()

?

f)字符串長度LENGTH()

?

g)字符串替換REPLACE()

如:SELECT SUBSTR('hello',1,3) 截取字符串,

LENGTH('hello') 字符串長度,

REPLACE('hello', 'l', 'x') 字符串替換

????FROM dual;

截取點從0和1都是一樣的

如已顯示所有雇員的姓名及姓名的后三個字符(因為雇員姓名的字符喜歡長度不一樣,只能求出整個的長度再減去2,進行截取):

SELECT ename, SUBSTR(ename,LENGTH(ename)-2) FROM emp;

SUBSTR可以倒著截取,只要輸入的位置是負數就表示倒著進行

SELECT ename, SUBSTR(ename,-3,3) FROM emp;

?

?

2)數值函數

接受數值輸入并返回數值

?

a)四舍五入ROUND()

如執行四舍五入操作:

如保留兩位小數:

如保留整數位:

?

b)截斷小數位TRUNC()

與ROUND()不同,在TRUNC()中不會保留任何的小數,而且也不會進位

如驗證TRUNC函數:

通過該函數也可以指定小數點的保留位數:

也可以使用負數表示位數:

  • 取余(取模)MOD()

  • ?

    3)日期函數

    對日期型數據進行操作

    日期±數字=日期

    日期-日期=數字(天數)

    如:顯示10部門雇員進入公司的星期數

    首先要知道前日期:

    求出星期數:當前日期-雇用日期=天數 天數/7=星期數:

    SELECT empno,ename,ROUND((SYSDATE-hiredate)/7) FROM emp;

    ?

    a)MONTHS_BETWEEN()給定日期范圍的月數

    ?

    b)ADD_MONTHS()指定日期上加上指定約束,求出之后的日期

    ?

    c)NEXT_DAY()下一個的指定日期

    ?

    d)LAST_DAY ()求出給定日期的最后一天日期

    ?

    4)轉換函數

    從一種數據類型轉換為另一種數據類型

    ?

    a)TO_CHAR():轉換成字符串

    拆分年月日:如要將雇用日期的年月日進行分開,就可以使用這個函數進行拆分。但是首先必須指定拆分的通配符:

    SELECT empno,ename,

    TO_CHAR(hiredate,'yyyy') year,

    TO_CHAR(hiredate,'mm') months,

    TO_CHAR(hiredate,'dd') day

    FROM emp;

    日期格式轉換:

    Oracle中默認的日期格式:19-4月 -87

    中國的格式:1987-04-19

    SELECT empno,ename,TO_CHAR(hiredate,'yyyy-mm-dd') FROM emp;

    去掉前導0:如果是5月會用05表示,如果不希望出現的話,可以使用fm去掉

    SELECT empno,ename,TO_CHAR(hiredate,'fmyyyy-mm-dd') FROM emp;

    分割數字:在數字中加入一些符號以分割太長的數字,一般使用","

    9:表示一位數字

    SELECT empno,ename,TO_CHAR(sal,'99,999') FROM emp;

    金額顯示 方式

    $:表示美元

    L:Local的縮寫,以本地的語言顯示金額

    SELECT empno,ename,TO_CHAR(sal,'$99,999') FROM emp;

    SELECT empno,ename,TO_CHAR(sal,'L99,999') FROM emp;

    ?

    ?

    b)TO_NUMBER():轉換成數字

    SELECT TO_NUMBER('123')+TO_NUMBER('123') FROM dual;

    ?

    c)TO_DATE():轉換成日期

    SELECT TO_DATE('2009-02-16','yyyy-mm-dd') FROM dual;

    ?

    5)通用函數

    ?

    a)NVL函數

    如計算年薪

    SELECT empno,ename,(sal+comm)*12 FROM emp;

    造成這樣的結果是有些雇員的獎金是NULL,NULL計算之后還是NULL,此時就可以使用NVL函數,將一個指定的null值變成指定的內容

    SELECT empno,ename,NVL(comm,0),(sal+NVL(comm,0))*12 income FROM emp;

    ?

    b)DECODE函數

    類似于IF…ELSE語句

    DECODE(col/expression,search1,result1[,search2,result2,…][,default])

    說明:col/expression:列名或者表達式

    search1、search2…searchi:用于比較的條件

    result1、result2…resulti:返回值

    如果col/expression和searchi相比較,結果相同的話則返回resulti,如果沒有與col/expression相匹配的結果,則返回默認值default

    SELECT DECODE(1,1,'內容是1',2,'內容是2',3,'內容是3') FROM dual;

    ?

    轉載于:https://blog.51cto.com/858315/1124949

    總結

    以上是生活随笔為你收集整理的Oracle从零开始04——SQL语句03——单行函数的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。