Oracle DB嵌套函数
Oracle DB嵌套函数
嵌套函数
• 单行函数可以嵌套到任意层。
• 嵌套函数的计算顺序是从最内层到最外层。
单行函数可以嵌套到任意深度。嵌套函数的计算顺序是从最内层到最外层。下面的一些示例显示这类函数的灵活性。
嵌套函数:示例1
hr@TEST0924> SELECT last_name, UPPER(CONCAT(SUBSTR (LAST_NAME, 1, 8), '_US')) FROM employees WHERE department_id = 60; LAST_NAME UPPER(CONCAT(SUBSTR(LAST_NAME,1,8), ------------------------- ----------------------------------- Hunold HUNOLD_US Ernst ERNST_US Austin AUSTIN_US Pataballa PATABALL_US Lorentz LORENTZ_US
示例显示部门60 中的雇员的姓氏。该SQL 语句的计算涉及以下三个步骤:
1.内部函数检索姓氏的前8 个字符。
Result1 = SUBSTR (LAST_NAME, 1, 8)
2.外层函数将结果与_US连接在一起。
Result2 = CONCAT(Result1, '_US')
3.最外层函数将结果转换为大写。
因为没有给出列别名,所以整个表达式就成为列标题。
示例:
显示距聘用日期六个月后的下一个星期五的日期。按聘用日期对结果排列。
hr@TEST0924> SELECT TO_CHAR(NEXT_DAY(ADD_MONTHS (hire_date, 6), 'FRIDAY'), 'fmDay, Month ddth, YYYY') "Next 6 Month Review" FROM employees ORDER BY hire_date; Next 6 Month Review ------------------------------------------------------------------------------------- Friday, July 20th, 2001 Friday, December 13th, 2002 Friday, December 13th, 2002
嵌套函数:示例2
hr@TEST0924> SELECT TO_CHAR(ROUND((salary/7), 2),'99G999D99', 'NLS_NUMERIC_CHARACTERS = '',.'' ') "Formatted Salary" FROM employees; Formatted ---------- 371,43 371,43 628,57 1.857,14
以上结果按照丹麦表示法显示,即逗号用作小数点,句点用作千位分隔符。
hr@TEST0924> SELECT TO_CHAR(ROUND((salary/7), 2),'99G999D99') "Formatted Salary" FROM employees; Formatted ---------- 371.43 371.43 628.57 1,857.14
示例显示雇员薪金除以7 并舍入到2 位小数的结果。然后
首先,执行内部ROUND函数将薪金除以7 之后的值舍入到2 位小数。然后,使用TO_CHAR函数设置ROUND函数结果的格式。
注:在TO_CHAR函数参数中指定的D 和G 是数字格式元素。D 在指定的位置返回小数点字符。G 用作组分隔符。