前段时间做维护的时候,阅读别人SQL文的时候看到几个函数,今记录如下,以备后用
1. COALESCE(expression_1,expression_2,……,expression_n)
这个函数返回参数表达式中的一个不为空的表达式的值,如果所有表达式的值都为空,那么返回空。
对这样一张表做如下SQL查询
SELECT C.TNO,COALESCE(C.CNAME,C.CNO) FROM COURSE C
得到如下结果
当C.CNAME为空的时候显示C.CNO。当然如果这是CNO也是空值,那么将返回空值。
2. DECODE()
该函数语法如下
DECODE(expression, if1, value1, if2,value2, if3,value3, . . ., default)
意思是说,如果expression的值等于if1的值,返回value1,如果不等,再和if2比较,相等返回value2,以此类推,如果所有的条件都不满足,返回default默认值。
看下面SQL
SELECT DECODE(1,1,'男',0,'女','未知') FROM DUAL --1 SELECT DECODE(0,1,'男',0,'女','未知') FROM DUAL --2 SELECT DECODE(3,1,'男',0,'女','未知') FROM DUAL --3 SELECT DECODE(3,1,'男',0,'女') FROM DUAL --4
第一条结果是"男",第二条结果是"女",第三条结果是"未知",第四条结果为空。
也就是说如果没有默认值,而前面的所有条件又都没有匹配,则返回空。
3. LAG()
这个函数可以取出某个字段前N条记录的值。对如下表
进行下面的SQL查询
SELECT C.*,LAG(C.CNAME,1) OVER(ORDER BY C.CNO) FROM COURSE C
所得结果如下
第一条记录已经无法再取前一条记录,所以LAG()函数返回空。
SQL为意思如下。
LAG(C.CNAME, 1) 表示取前一条记录的CNAME的值。
OVER(ORDER BY C.CNO)表示按CNO来排序,然后决定记录之间的前后关系。
在over()里面还可以加入partition by,如下SQL
SELECT C.*,LAG(C.CNAME,1) OVER(PARTITION BY C.TNO ORDER BY C.CNO) FROM COURSE C
结果如下
partition by是用来分区的。对TNO进行分区,在不同的TNO下寻找上一条记录的CNAME的值。所以查询结果中t001,t002,t003中分别有一条记录最后的值为空。
如果希望在没有前N条记录的时候不返回空,可以使用默认值,SQL如下
SELECT C.*,LAG(C.CNAME,1,'default') OVER(PARTITION BY C.TNO ORDER BY C.CNO) FROM COURSE C
结果如下
在原来的空值的地方出现了default,当然这个值根据自己的需要设定想要的值。
LEAD()函数与此类似,不过它是查询某字段的后N条记录的值。
以上的SQL全部在oracle数据库下执行,其他数据库是否支持这些函数,未知,有待验证。
相关推荐
H2Database是一款轻量级、高性能的...总结,H2Database提供的聚合函数和数据库修改功能使其成为一个强大而灵活的数据库解决方案。理解并熟练运用这些功能,可以更好地管理和操作数据,提升应用程序的效率和用户体验。
在使用数据库函数时,需要注意以下几点: * 可以为参数 criteria 指定任意区域,只要它至少包含一个列标志和列标志下方用于设定条件的单元格。 * 条件区域可以在工作表的任意位置,但不要将条件区域置于数据清单的...
存储过程有以下几个显著优点:一是提高了性能,因为它们只需编译一次,后续调用时无需再次解析;二是增强了安全性,可以通过权限控制来限制对数据库的直接访问;三是提供了一种封装和模块化代码的方式,便于代码复用...
2. **以D开头**:除了`GETPIVOTDATA`之外,其余的12个数据库函数名字均以字母D开头,如`DAVERAGE`、`DSUM`等。这些函数名的D前缀,暗示了它们是针对数据库操作的专用函数。 3. **基础函数关联**:去掉D前缀后,很多...
1. **参数一致性**:每个数据库函数通常包括三个参数:`database`、`field`和`criteria`。`database`参数指定了数据清单或数据库所在的单元格区域,`field`指定了要使用的数据列,而`criteria`则是定义筛选条件的...
在VB6.0中进行数据库操作通常涉及以下几个步骤: 1. **连接数据库**:使用 ADO (ActiveX Data Objects) 创建连接对象并打开数据库连接。 2. **执行SQL命令**:使用 ADO 的 `Command` 对象执行 SQL 查询、插入、更新...
除了以上介绍的函数之外,还有其他几个数据库函数也很重要: - **DPRODUCT**:将数据库中符合指定条件的记录对应的字段值相乘。 - **DSTDEV**:估算数据库中样本的标准偏差。 - **DSTDEVP**:计算数据库中整个群体...
- **DUAL**: Oracle 数据库中的一个特殊表,常用于测试 SQL 函数或者执行简单的计算。因为这个表通常只包含一行数据,所以非常适合用来演示 SQL 函数的功能。 - **ASCII 和 CHR 函数**: - **ASCII**: 返回指定字符...
本文将深入探讨在标题为“ADO数据编程实例(数据库函数封装类)”的项目中涉及的知识点,并提供一个实用的数据库操作封装类的实例,以方便移植和使用。 首先,ADO的核心组件包括Connection、Command、Recordset、...
在数据库管理中,时间转换函数是非常重要的一...例如,你可以使用这些函数来找出一周的开始和结束日期,计算两个日期之间的间隔,或者确定某一天是当年的第几天。这些功能在报表、统计分析以及业务逻辑中都有广泛应用。
函数依赖是数据库设计中的一个重要概念,用于描述数据库中属性之间的关系。它可以帮助我们理解哪些属性是通过其他属性确定的,从而帮助我们设计更加合理的数据库结构。 **定义**:在关系模式R(A1, A2, ..., An)中,...
MSSQL数据库函数汇总 MSSQL数据库提供了多种函数来进行数据处理和分析,本文将对这些函数进行归纳和总结。 聚合函数 聚合函数用于对表达式中的所有值进行计算,常用的聚合函数包括: * SUM:返回表达式中所有值...
为了更好地理解这个系统及其工作原理,我们可以深入探讨以下几个关键知识点: 1. **会员信息系统**:会员信息系统是用于管理组织或企业会员信息的软件应用。它通常包括会员注册、登录、信息更新、查询等功能,帮助...
本文将深入探讨“数据库函数”中的一个关键方面——“数据类型”,并特别关注SQL Server中的数据类型。数据类型决定了数据库中列或变量可以存储哪种类型的数据,这对确保数据的准确性和一致性至关重要。 在SQL ...
下面通过几个例子来详细了解Oracle函数的创建与使用: #### 1. 创建不带参数的简单函数 ```sql CREATE OR REPLACE FUNCTION fun_test RETURN INTEGER IS BEGIN RETURN 1000; END; ``` 此函数名为`fun_test`,...
### Teradata数据库函数详解 #### 一、Teradata数据库简介 Teradata是一家专注于提供企业级数据分析解决方案的公司,其核心产品之一就是Teradata数据库。Teradata数据库以其强大的数据处理能力和高度可扩展性著称...
连接到PG数据库通常涉及以下几个步骤: 1. **安装和配置**:首先,确保你的系统已经安装了PostgreSQL,并配置了正确的数据库、用户名和密码。这些信息将在连接函数中使用。 2. **连接函数**:`ConnectPG`函数可能...
SQL函数和操作主要包括以下几类: 1. **选择(SELECT)**:这是SQL中最常用的功能,用于从数据库中检索数据。例如,`SELECT * FROM table_name` 将选取表table_name中的所有记录。通过添加WHERE子句,可以指定特定...
以上是对Sybase-iq数据库中几个关键知识点的详细说明,包括数据库创建、数据文件使用率查询、日期时间数据类型及其格式,以及Rank窗口化集合函数、Now函数和ARGN函数的应用。希望这些信息能帮助读者更好地理解和应用...