官术网_书友最值得收藏!

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子句則在分組后進行篩選。

主站蜘蛛池模板: 从江县| 衡山县| 来安县| 喀喇沁旗| 调兵山市| 盐池县| 景宁| 桦南县| 淳安县| 平乐县| 资溪县| 微博| 合作市| 普兰店市| 黄山市| 宝应县| 石柱| 桦甸市| 三江| 从江县| 随州市| 大丰市| 宜君县| 新田县| 固阳县| 枣强县| 桑日县| 泰安市| 天柱县| 安徽省| 河北区| 揭西县| 定襄县| 莱阳市| 西峡县| 宁明县| 博野县| 崇阳县| 黎平县| 陆川县| 苏尼特右旗|