📜  SQL 函数的类别

📅  最后修改于: 2021-09-09 12:01:37             🧑  作者: Mango

SQL 函数被开发到 Oracle 数据库中,可用于各种适当的 SQL 语句。 SQL 中的函数和 Pl/SQL 中的用户定义函数都是不同的。

在查询中,如果调用比函数预期不同的数据类型作为自变量的SQL函数,那么甲骨文将参数的数据类型转换为预期的数据类型进行SQL函数之前,如果你调用带有null参数的函数,它会返回空值。

功能类别:

1. Single_row_function
2. Aggregate_function
3. Analytic_function
4. Model_function
5. User_defined_function 
6. Scalar functions 

其中一些功能解释如下。

  1. 单行函数:
    单行函数是那些为查询的表或视图的每一行返回单个结果行的函数。该函数存在于选择列表、WHERE 子句、START WITH、CONNECT BY 子句和 HAVING 子句中。

    • 数字函数
    • 字符函数
    • 数据挖掘功能
    • 日期时间函数
    • 转换函数
    • 集合_函数
    • XML_function
  2. 聚合函数:
    使用聚合函数,它将返回基于行组的单行结果,而不是单行。聚合函数出现在选择列表和 ORDER BY 和 HAVING 子句中。它们通常与 GROUP BY 子句和 SELECT 语句一起使用。

    如果使用 GROUP BY 子句,则 Oracle 将选择列表中的聚合函数应用于查询表或视图中的所有行。

    除 GROUPING 和 COUNT(*) 之外的所有聚合函数都忽略空值。您还可以在聚合函数的参数中使用 NVL函数来替换空值。
    您还可以嵌套聚合函数。例如:-

    SELECT AVG(MAX(salary) 
    FROM employees 
    GROUP BY department_id
    
    AVG(MAX(salary))
    ----------------
             10925 

    最常用的聚合函数是AVG, COUNT, DENSE_RANK, MAX, MIN, RANK, SUM

  3. 解析函数:
    分析函数根据行组计算聚合值。分析函数和聚合函数之间的区别在于它们为每组返回多行。行组称为窗口,由analytic_clause定义。

    分析函数是查询中除最后的 ORDER BY 子句之外的最后一组操作。

    • 分析子句
    • Query_partition_clause
    • Order_by_clause
    • Windowing_clause
  4. 模型功能:
    SELECT语句中,模型函数可以与model_clause一起使用。

    模型功能是:

    • 简历
    • 迭代次数
    • 持久性
    • 呈现
    • 以前的
  5. 用户定义函数:
    您可以使用 PL/SQL 或Java的用户定义函数来提供 SQL 或 SQL 内置函数中不可用的功能。 SQL 函数和用户定义的函数可以出现在任何地方,即表达式出现的地方。

    例如,它可以用于:

    • SELECT语句的选择列表。
    • WHERE子句的条件。
    • CONNECT BY, ORDER BY, START WITHGROUP BY
    • INSERT语句的VALUES子句。
    • UPDATE语句的SET子句。

    基本上,我们使用CREATE函数的SQL创建用户定义的函数。

  6. 标量函数:
    您可以在 SQL 中使用标量函数根据输入值返回单个值。
    Input: SELECT UCASE(geeksforgeeks) ;
    Output: GEEKSFORGEEKS 

    最常用的标量函数是 UCASE() 将字段转换为大写,LCASE() 将字段转换为小写,LEN() 查找文本字段的长度,ROUND() 将指定的小数位数舍入, NOW() 查找当前系统日期和时间。