Oracle 單行函數

學習Oracle 單行函數:

包括字符函數,數值函數,日期函數,轉換函數,通用函數。
dual是一個”偽表”,可以用來測試函數和表達式。
1, 字符函數
包括大小寫控制函數,字符控制函數。
大小寫控制函數:lower,upper,initcap。
字符控制函數:concat,substr,length,instr,lpad | rpad,trim,replace。
select lower( last_name || first_name) from employees;
select upper( last_name || first_name) from employees;
select initcap(job_id),job_id from employees;

select concat('Hello','World') from dual;
select substr('HelloWorld',1,5) from dual;
select length('HelloWorld') from dual;
select instr('HelloWorld','W') from dual;
select lpad('salary',10,'*') from dual;

select rpad('salary',10,'*') from dual;
select trim('H' from 'HelloWorld') from dual;
select replace('Hello','e','o') from dual;

2, 數字函數
分別有:round — 四舍五入,trunc — 截斷,mod — 求余
select round(85.969,2),round(85.969,0),round(85.969,-1) from dual;
select trunc(85.969,2),trunc(85.969,0),trunc(85.969,-2) from dual;
select last_name,salary,mod(salary,5000) from employees;

3, 日期函數
函數sysdate 返回:日期,時間
日期的數學運算:

(1)在日期上加上或減去一個數字結果仍為日期
(2)兩個日期相減返回日期之間相差的天數(日期不允許做加法運算,無意義)
(3)可以用數字除24來向日期中加上或減去天數。

計算員工入職日期距離系統當前時間相差多少個星期:
select last_name,(sysdate-hire_date)/7 as "周末" from employees;

日期函數:
months_between:兩個日期相差的月數。
add_months:向指定日期中價上若干月數。
next_day:指定日期的下個星期*對應的日期。
last_day: 本月的最后一天。
round: 日期四舍五入。
trunc:日期截斷。

select round( months_between(sysdate,'1-1月-19')) from dual;
select add_months(sysdate,3) from dual;
select next_day(sysdate,'星期五') from dual;
select last_day(sysdate) from dual;

4,轉換函數
數據類型轉換:隱性/顯性
隱性數據類型轉換:
Oracle 自動完成轉換:
Varchar2 or char --> number
Varchar2 or char–> date
Number --> Varchar2
Date --> Varchar2

To_char 函數對日期的轉換

(1)必須包含在單引號中而且大小寫敏感。
(2)可以包含任意的有效的日期格式。
(3)日期之間用逗號隔開。

select last_name,to_char(hire_date,'dd month yyyy') from employees;

To_char 函數對字符的轉換
select to_date('2019年1月29日 10:10:20','yyyy"年"mm"月"dd"日"hh:mi:ss') From dual

to_char函數對數字的轉換
下面是在to_char 函數中經常使用的幾種格式:

9  數字
0	零
$  美元符
L  本地貨幣符號
.  小數點
, 千位符

To_char函數對數字的轉換

select last_name, to_char(salary,'$999,999,99') "工資" from employees;

5,通用函數
下面這些函數適用于任何數據類型,同時也適用于空值:
nvl(n1,n2)
nvl2(n1,n2,n3)
nullif(n1,n2)
coalesce(n1,n2……,nn)

nvl 函數:
將空值轉換成一個已知的值:

    (1)可以使用的數據類型有日期、字符、數字。(2)函數的一般形式:–	nvl (commission_pct,0)–	nvl (hire_date,'01-7月-97')–	nvl (job_id,'No Job Yet')(3)nvl2 (n1, n2,n3) :n1不為NULL,返回n2;為NULL,返回n3。

select last_name,salary,nvl(commission_pct,0),(salary*12)+ (salary*12*nvl(commission_pct,0)) "工資" from employees;
select last_name, salary, commission_pct, nvl2(commission_pct, 'AA', 'YY') from employees where department_id in (50, 80);

nullif (n1,n2) : 相等返回null,不等返回n1。

select first_name, length(first_name) "n1", last_name, length(last_name) "n2", nullif(length(first_name), length(last_name)) "結果" from employees;

coalesce函數
(1)coalesce與nvl相比的優點在于 coalesce可以同時處理交替的多個值。
(2)如果第一個表達式為空,則返回下一個表達式,對其他的參數進行coalesce。
select last_name, coalesce(commission_pct, salary, 10) YY from employees order by commission_pct;

條件表達式
(1)在 SQL 語句中使用if-then-else 邏輯
(2)使用兩種方法:
– case表達式
– decode 函數

select last_name, job_id, salary, case job_id when 'IT_PROG' then 1.10*salary when 'AD_VP' then 1.15*salary when 'AD_PRES' then 1.20*salary else salary end "綜合" from employees;

嵌套函數
(1)單行函數可以嵌套。
(2)嵌套函數的執行順序是由內到外。
F3(F2(F1(col,arg1),arg2),arg3)

select last_name, nvl(to_char(manager_id), 'No') from employees;

本篇的單行函數到這里結束。通過這篇我們應該對單行函數有初始的了解,深入了解還需要勤加練習。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443390.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443390.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443390.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Oracle 多表查詢 --笛卡爾集--左連接--右連接--1999 語法--滿外連接

Oracle 多表查詢總結 笛卡爾集現象: 笛卡爾集會在下面條件下產生: – 省略連接條件 – 連接條件無效 – 所有表中的所有行互相連接 為了避免笛卡爾集, 可以在where加入有效的連接條件。 Oracle 連接: 使用連接在多個表中查詢數據。 在wher…

Oracle 數據庫-分組函數總結

Oracle 分組函數 分組函數作用于一組數據,并對一組函數返回一個值。 組函數類型: avg,count,max,min,sum 可以對數值型數據使用avg和sum函數。 select avg(salary),min(salary),max(salary),sum(salary)…

在notepad++中配置java編譯環境

在notepad中配置java編譯環境 (1)首先,下載安裝了Notepad,在菜單欄那里找到Plugin Manager,有一些版本是沒有中文的,所有只有Plugin Manager,如果連Plugin Manager都沒有,你則需要去…

Java 基礎數據類型

Java 基礎數據類型 Java的兩大數據類型:基本數據類型、引用類型。 Java語言提供了八種基本數據類型。六種數字類型(四個整數型,兩個浮點型),一種字符類型,還有一種布爾型。 整形:byte&#xf…

Java獲取系統時間

Java獲取系統時間 Java獲取系統時間 在java 中,有很多種方法都可以獲取到系統的當前時間,但也需要到對應的類,不同的類自然有不同的方法。這里為大家介紹獲取系統當前時間的四種方式。 1. 通過Calendar類來獲取當前時間 需要引用…

Java單例模式的幾種實現方式

Java單例模式的幾種實現方式 在Java 中,單例類只能有一個實例,必須創建自己的唯一實例,單例類必須給所有其他對象提供這一實例。Java 單例模式有很多種實現方式,在這里給大家介紹單例模式其中的幾種。分別是餓漢式,懶…

Java 中抽象類與接口

Java 抽象類: 在面向對象的概念中,所有的對象都是通過類來描繪的,但是反過來,并不是所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這個類就是抽象類。 抽象類不能創建…

Java 中的進程與線程的實現

了解進程與線程: 進程: 當一個程序進入內存運行時,即變成一個進程。進程是處于運行過程 中的程序,并且具有一定的獨立功能,進程是系統進行資源分配和調度的一個獨立單 位一般而言,進程包含如下三個特征&…

Java集合工具類:Collections

Java提供了一個操作Set、List和Map等集合的工具類:Collections,該工具類里 提供了大量方法對集合元素進行排序、查詢和修改等操作,還提供了對集合對象實現同步控制等方法。 一、 排序操作 如下示例: public class CollectionsSor…

Java異常處理throws/throw

Java的異常被分為兩大類:Checked異常和Runtime異常(運行時異常)。 ? Runtime異常:所有的RuntimeException類及其子類的實例; ? Checked異常:不是RuntimeException類及其子類的異常實例。 只有Java語言提供…

JDBC 連接MYSQL數據庫

1. 加載驅動 Class.forName("com.mysql.jdbc.Driver");com.mysql.jdbc 包名 Driver 驅動名,驅動包需要引入進來 mysql com.mysql.jdbc.Driveroracle oracle.jdbc.driver.OracleDriversqlserver com.microsoft.sqlserver.jdbc.SQLServerDriver …

JSP 之輸出九九乘法表

JSP是一種建立在Servlet規范提供的功能之上的動態網頁技術,允許在網頁文件中嵌入java代碼和jsp標記。Java 服務器頁面 (Java Server Page ,JSP) 擴展名為 .jsp。 1.jsp的執行過程 Jsp文件在用戶第一次請求時,會被編譯成Servlet,然后由這個Se…

Java 重寫與重載

方法的重寫: 重寫是子類對父類的允許訪問的方法的實現過程進行重新編寫, 返回值和形參都不能改變。 重寫的好處在于子類可以根據需要,定義特定于自己的行為。 也就是說子類能夠根據需要實現父類的方法。 重寫方法不能拋出新的檢查異常或者比被重寫方法申…

Java新增

在實踐項目中我們有可能需要做到新增功能,新增一張表,或是新增多張表。這里我新增的是一張表。 這里主要描述DAO層與Servlet 層: DAO 層: public class UserDaoImpl implements UserDao {private Connection con null;private P…

JSP根據狀態動態改變數據表格按鈕

有時候在開發的過程中會遇到需要根據狀態ID 來動態改變數據表格的按鈕&#xff0c;下面我主要講述兩種表格根據ID改變按鈕的方式。 下面這種我是用EL 表達式獲取表格中的值&#xff1a; <table class"table table-striped table-bordered table-hover" id"s…

Java 模糊查詢

在學習Java 這門語言過程中&#xff0c;會遇到無數的知識點與錯誤&#xff0c;最重要的是我們能夠在茫茫的代碼中找到突破口&#xff0c;并用心去汲取精華。 在很多時候我們會用到模糊查詢&#xff0c;這里是我在編碼過程中用到的模糊查詢。 JSP &#xff1a; <input value…

Java刪除表

Java刪除表 這里頁面我用了layui 框架做刪除的&#xff0c;這里需要引入layui 的css 與js 插件&#xff0c;這里寫出主要的代碼。 Jsp &#xff1a; //監聽行工具事件table.on(tool(test), function(obj){var data obj.data; //獲得當前行數據var date1 data.classifyColum…

原始分頁

Jsp &#xff1a; <div style"float: right;">當前為${currentPage}頁&#xff0c;共有${totalRow}條數據&#xff0c;共${totalPage}頁 <select style"border-radius: 18px;" id"pageSize" name"pageSize" onchange"c…

根據銀行卡號判斷銀行卡是否正確與歸屬銀行

校驗過程&#xff1a; 1.從卡號的最后一位數字開始&#xff0c;逆向將奇數位&#xff08;1&#xff0c;3&#xff0c;5 等等相加&#xff09; 2.從卡號最后一位數字開始&#xff0c;逆向將偶數位數字&#xff0c;先乘以2&#xff0c;如果乘積為兩位數&#xff0c;將個位數字相加…

根據年月日判斷第多少天,星期幾

1. 根據年月日判斷第多少天 Scanner是SDK1.5新增的一個類,可使用該類創建一個對象。 Scanner scannernew Scanner(System.in);  然后scanner對象調用下列方法&#xff08;函數&#xff09;,讀取用戶在命令行輸入的各種數據類型   next.Byte(),nextDouble(),nextFloat,nextIn…