- Oracle從新手到高手
- 楊繼萍
- 835字
- 2019-12-09 14:49:08
5.4 轉換與分組函數
在操作表中的數據時,經常需要將某個數據從一種數據類型轉變為另一種數據類型。這時就需要使用數據轉換函數。而分組函數,則是在GROUP BY子句中所進行的分組操作。
5.4.1 轉換函數
轉換函數是對數字格式相互轉換的一系列函數,包括TO_CHAR()函數、TO_DATE()函數和TO_NUMBER()函數等。
1. TO_CHAR()函數
TO_CHAR()函數是最常用的轉換函數,該函數可以把指定的表達式轉變成字符串。TO_ CHAR()函數的語法形式如下:
TO_CHAR(X[,FORMAT])
在上面的語法中,參數X表示將要轉變的表達式;FORMAT參數用于指定X表達式的格式。可用的格式如下表所示。

下面的示例使用TO_CHAR()函數,將當前系統時間按指定格式轉變為字符串。
SQL> select to_char(sysdate,'HH12-MI-SS') 時間 from dual; 時間 -------- 04-50-02
2. TO_DATE()函數
該函數將字符串轉化為Oracle中的一個日期。TO_DATE()函數的語法格式如下:
TO_DATE (c[,fmt])
其中,如果參數FMT不為空時,則按照FMT中指定格式進行轉換。注意這里的FMT參數,如果FMT為J則表示按照公元制轉換,為C則必須為大于0并小于5373484的正整數。
例如:

3. TO_NUMBER()函數
可以使用TO_NUMBER()函數把某個表達式轉變成數字。表達式的格式可以使用可選的格式描述。TO_NUMBER()函數的語法形式如下:
TO_NUMBER(c[,fmt])
下面的示例使用TO_NUMBER()函數實現將16進制數轉換為10進制數。

5.4.2 分組函數
在SELECT語句中,可以使用GROUP BY子句進行分組操作,并可以使用HAVING子句提供分組條件。
在下面的查詢中,將對SCOTT模式中的EMP表進行分組,以統計各部門的員工數量。

HAVING子句通常與GROUP BY子句一起使用,以便在完成分組統計后,可以使用HAVING子句對分組的結果進行進一步篩選。如果不使用GROUP BY子句,HAVING子句的功能與WHERE子句相同,對整個表進行篩選。
在下面的查詢中,將搜索出員工數量大于等于5的所有部門。

這里要注意SELECT語句中的各子句的執行次序。在SELECT語句中,首先執行FROM子句找到表,而WHERE子句則在FROM子句輸出的數據中進行篩選,HAVING子句則在GROUP BY、WHERE或FROM子句執行后對其結果進行篩選。
下面的示例分別演示了HAVING和WHERE子句對SELECT語句的影響。第一個檢索語句使用HAVING子句對分組的結果進行篩選;第二個檢索語句則使用WHERE子句對表中的數據進行篩選后再分組,如下所示。

從查詢結果可以看出,WHERE子句直接從表中篩選數據,過濾掉了部分員工信息;而HAVING子句則在分組后進行篩選。
- Python概率統計
- 編程的修煉
- Java系統分析與架構設計
- Game Programming Using Qt Beginner's Guide
- 少年輕松趣編程:用Scratch創作自己的小游戲
- 樂高機器人設計技巧:EV3結構設計與編程指導
- OpenNI Cookbook
- 軟件測試技術指南
- 大數據分析與應用實戰:統計機器學習之數據導向編程
- C語言程序設計
- Learning Continuous Integration with TeamCity
- Quantum Computing and Blockchain in Business
- Scratch·愛編程的藝術家
- Beginning C++ Game Programming
- Visual C++開發寶典