coalesce 函数详解与学习记录

2023-11-17

1、在工作中都用到了此函数,特此学习并记录一下.
2、coalesce 用途:

1、将空值替换成其他值;
2、返回第一个非空值

3、SQL实例​​​​​​​一

select coalesce(success_cnt, 1) from tableA

当success_cnt 为null值的时候,将返回1,否则将返回success_cnt的真实值。

select coalesce(success_cnt,period,1) from tableA

当success_cnt不为null,那么无论period是否为null,都将返回success_cnt的真实值(因为success_cnt是第一个参数),当success_cnt为null,而period不为null的时候,返回period的真实值。只有当success_cnt和period均为null的时候,将返回1。

4、所支持函数得数据库:

SqlServer、MySql、Oracle、PostgreSql、Sqlite 、Hive上 均支持该函数。


二、SQL实例​​​​​​​二

若上面还有SQL使用逗号隔开,在书写以下语句,这里省掉了。。。:

sum((
SELECT COALESCE (CAST(SUM(l2.value16) AS DECIMAL (10, 0)),0) FROM tmt001301l2 WHERE l2.value4 = a.id AND l2.value20 != ‘00’
)) AS “装载量”,

1、细心研究一下这条语句的含义:

COALESCE (CAST(SUM(l2.value16) AS DECIMAL (10, 0)),0)

1、coalesce():返回参数中的第一个非空表达式(从左向右依次类推);
2、CAST 函数是一个数据类型转换函数
3、(CAST(SUM(l2.value16) AS DECIMAL (10, 0)),0) 把(CAST(SUM(l2.value16) AS DECIMAL (10, 0))看作是一个字段,如果字段l2.value16为null,则取0. 开始没看懂0是干嘛用的。。。
数据库CAST()函数,格式(CAST AS decimal)
语法:

CAST (expression AS data_type)

参数说明:

expression:任何有效的SQServer表达式。

AS:用于分隔两个参数,在AS之前的是要处理的数据,在AS之后是要转换的数据类型。 data_type:目标系统所提供的数据类型,包括bigint和sql_variant,不能使用用户定义的数据类型。

Decimal为SQL Server、MySql等数据库的一种数据类型,不属于浮点数类型,可以在定义时划定整数部分以及小数部分的位数。

2、CAST 函数的学习:

(1).CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。以下例子用于将文本字符串’12’转换为整型:

SELECT CAST(‘12’ AS int)

(2).返回值是整型值12。如果试图将一个代表小数的字符串转换为整型值,又会出现什么情况呢?

SELECT CAST(‘12.5’ AS int)

(3).CAST()函数和CONVERT()函数都不能执行四舍五入或截断操作。由于12.5不能用int数据类型来表示,所以对这个函数调用将产生一个错误:

Server: Msg 245, Level 16, State 1, Line 1

Syntax error converting the varchar value

'12.5' to a column of data type int.

(4).要返回一个合法的数值,就必须使用能处理这个值的数据类型。对于这个例子,存在多个可用的数据类型。如果通过CAST()函数将这个值转换为decimal类型,需要首先定义decimal值的精度与小数位数。在本例中,精度与小数位数分别为9 与2。精度是总的数字位数,包括小数点左边和右边位数的总和。而小数位数是小数点右边的位数。这表示本例能够支持的最大的整数值是9999999,而最小的小数是0.01。

SELECT CAST(‘12.5’ AS decimal(9,2))

decimal数据类型在结果网格中将显示有效小数位: 12.50

(5).精度和小数位数的默认值分别是18与0。如果在decimal类型中不提供这两个值,SQL Server将截断数字的小数部分,而不会产生错误。

SELECT CAST(‘12.5’ AS decimal)

结果是一个整数值:12

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

coalesce 函数详解与学习记录 的相关文章

  • SQL Server 大小写/排序规则问题

    今天我在客户数据库中遇到了一个奇怪的情况 SQL Server 2005 数据库排序规则不区分大小写 因此我可以使用任何大小写编写 SQL 查询 没有任何问题 除了一个 一张特定表中的一个特定列称为 DeadZone 如果我这样查询 从表名
  • 实体框架中的批量插入

    我使用批量插入插入大量记录 例如 20K 当我仅插入一个实体时 它会正常工作 但是 当我用来插入多个实体 例如一对多 时 它将仅插入父实体 而不会插入子实体 我的实体和代码 Customer cs public class Customer
  • 合并sql中的列

    我正在使用 SQL Server 2017 有一个存储过程 其中我有一个带有连接的简单选择 例如 SELECT p legacyKey AS JobNumber p Name AS JobName G Label AS DesignStat
  • 是否可以使用 Dapper 流式传输大型 SQL Server 数据库结果集?

    我需要从数据库返回大约 500K 行 请不要问为什么 然后 我需要将这些结果保存为 XML 更紧急 并将该文件通过 ftp 传输到某个神奇的地方 我还需要转换结果集中的每一行 现在 这就是我正在做的事情 TOP 100结果 使用 Dappe
  • SQL Server 抱怨无效的 json

    我正在使用 Azure 数据工厂和 Azure SQL 数据库编写 ETL 工具 数据工厂捕获映射数据流的输出并将其作为字符串插入到 SQL Server 表 Audit OperationsEventLog 的 StatusMessage
  • 如何进行数据透视并计算列平均值

    我承认这是迄今为止我必须面对的最复杂的 SQL 语句之一 我在这件事上碰壁了 我希望有人能帮我一把 我在数据库中有这张表 Item ActiveTime sec DateTime 1 10 2013 06 03 17 34 22 gt Mo
  • TSQL - 生成文字浮点值

    我理解比较浮点数时遇到的许多问题 并对它们在这种情况下的使用感到遗憾 但我不是表格作者 只有一个小障碍需要克服 有人决定使用浮点数 就像您期望使用 GUID 一样 我需要检索具有特定浮点值的所有记录 sp help MyTable Colu
  • 当从属文本框中没有输入文本时,如何让 gridview 显示所有表格行?

    下面的代码可以正常工作 并根据文本框中输入的文本过滤我的网格视图 当我的文本框中没有输入任何文本时 我没有得到任何结果 并且无法理解为什么 我的问题 如何让gridview显示all当文本框中没有输入文本时表行 MSSQL Search n
  • 如何删除 Sql Server 2005 中存在的临时 SP

    我的问题很简单 如何删除临时存储过程 如果存在 这是因为当我在脚本中创建临时 SP 时 它会在第二次运行时抛出类似 数据库中已存在名为 sp name 的对象 的错误 我不想向用户显示此消息 请帮我 您的解决方案受到高度赞赏 临时进程的删除
  • 在 C# 中执行基于存储过程的查询后,如何重新使用 CommandText 的 SqlCommand 对象?

    我有一个示例代码 aCommand CommandType CommandType StoredProcedure aCommand Parameters AddWithValue book id bookID aCommand Param
  • 如何拥有引用另一个表的检查约束?

    我在 SQL Server 2008 数据库中有以下表 tblItem 其中有一个ItemID field 好项目 它还有一个 ItemID 字段 并且有一个指向 tblItem 的外键 tblBadItem 它也有一个 ItemID 字段
  • 为什么我的代码会产生错误:该语句没有返回结果集[重复]

    这个问题在这里已经有答案了 我正在从 Microsoft SQL Server Studio 执行以下查询 该查询工作正常并显示结果 SELECT INTO temp table FROM md criteria join WHERE us
  • 在数据库中搜索时忽略空文本框

    此代码能够搜索数据并将其加载到DataGridView基于搜索表单文本框中提供的值 如果我将任何文本框留空 则不会有搜索结果 因为 SQL 查询是用 AND 组合的 如何在搜索 从 SQL 查询或 C 代码 时忽略空文本框 private
  • 插入具有只读主键列的表

    我正在使用一个使用 sql server 数据库的应用程序 我试图在表中插入一行 如下所示 该表有一个主键 prodNum 这是自动生成的密钥 当我尝试向表中插入一行时 如下所示 在行中intResult oSglProdTableAdap
  • 没有提示指令的直连接中表的顺序是否会影响性能?

    所有基于 SQL 的 RDBMS 10 年前的版本 直接连接查询 没有提示指令 中的表顺序是否会对最佳性能和内存管理产生影响 听说最后一个join应该是最大的表 您的数据库的查询优化器如何处理这种情况 回答你的问题 是的 表的顺序在连接中有
  • 通过 C# SqlCommand 执行合并语句不起作用

    我正在第一次尝试使用临时表和MERGE语句通过更新 SQL 表SqlCommandC 中的对象 我正在开发的程序旨在首先将大量记录 最多 20k 导出到 Excel 电子表格中 然后 用户可以搜索并替换特定值 并根据需要更新任意多记录中的任
  • 如何使用一个命令删除 SQL 数据库中的所有索引?

    那么 如何通过一条命令删除 SQL 数据库中的所有索引呢 我有这个命令可以获取所有 20 个左右的 drop 语句 但是如何从这个 结果集 运行所有这些 drop 语句呢 select from vw drop idnex 给我相同列表的另
  • 如何在 SQL Server 2012 中选择除一列之外的所有列? [复制]

    这个问题在这里已经有答案了 有没有一种方法可以选择所有列 但只选择我不想选择的特定列 我的意思是有时我会遇到这样的问题 表有数百个字段 而我只需要删除一个字段 我需要重写所有列吗 有什么窍门吗 喜欢select
  • 跳过行:将数据从 SSIS 导出到 Excel 文件

    我正在尝试使用 SSIS 将数据从 SQL Server 数据库导出到 Excel 文件中 我希望从第 6 行插入数据 第 5 行有标题 我可以映射标题名称Excel 目标编辑器 通过编写 SQL 命令到 SQL 表头 SELECT FRO
  • 什么会阻止 Docker 容器中运行的代码连接到单独服务器上的数据库?

    我有一个在 Ubuntu 14 04 上的 Docker 容器中运行的 NET Core 1 1 应用程序 它无法连接到在单独服务器上运行的 SQL Server 数据库 错误是 未处理的异常 System Data SqlClient S

随机推荐

  • 计算机网络 期末复习#1

    计算机网络 期末复习 1 大题 1 总时延 数据 速率 带宽 2 循环冗余检测CRC 3 无分类编制CIDR 构造超网 4 使用子网时分组转发 5 距离向量算法 6 拥塞控制 慢开始算法 7 路由器 以太网 1 总时延 有一个长度为 100
  • Python进阶篇

    大家好 我是易安 今天我们继续Python的学习 内容稍微有些多 不过我会尽可能举一些例子让你理解 对象比较与拷贝 在前面的学习中 我们其实已经接触到了很多 Python对象比较和复制的例子 比如下面这个 判断a和b是否相等的if语句 if
  • 06-PS中的四种蒙版

    Photoshop中的蒙版就是遮罩的意思 主要作用就是将其所在的图层 把不同的明暗度转化成相应的透明度 黑色为完全透明 灰色为半透明 白色为完全不透明 添加蒙版有便于灵活修改 不影响图层原貌 PS蒙版有四类 图层蒙版 剪切蒙版 矢量蒙版 快
  • Nmap食用指北

    Nmap食用指北 Nmap简介 Nmap Network mapper 是目前最流行的网络扫描工具 它不仅能够准确地探测单台主机的详细情况 而且能够高效率地对大范围IP地址段进行扫描 使用Nmap能够得知目标网络上哪些主机是存活的 以及哪些
  • 新闻网大数据实时分析可视化系统项目——10、数据采集/存储/分发完整流程测试...

    一 idea工具开发数据生成模拟程序 1 在idea开发工具中构建weblogs项目 编写数据生成模拟程序 package main java import java io public class ReadWrite static Str
  • LeetCode 面试题 03.02. 栈的最小值

    文章目录 一 题目 二 C 题解 一 题目 请设计一个栈 除了常规栈支持的 pop 与 push 函数以外 还支持 min 函数 该函数返回栈元素中的最小值 执行 push pop 和 min 操作的时间复杂度必须为 O 1 点击此处跳转题
  • 面试题:6种解法-顺序打印A1B2C3

    金不三 银不四的高频面试题 Java 中顺序打印 A1B2C3 是多线程中的一个经典面试问题 其解决方法可以锻炼程序员的多线程编程能力 本文将从多个角度 介绍 Java 中顺序打印 A1B2C3 的实现方式 总共分为如下6种方式 synch
  • VAE-GAN学习记录

    一 遇到的问题以及学习目的 学习VAE GAN主要是因为最近在做故障诊断相关的东西 之前在某篇论文里得知 使用GAN算法时 可以使用判别损失 重构损失对异常样本进行检测 然而 那篇论文 基于 LSTM GAN 的加油时序数据异常检测 里面
  • SpringBoot数据库连接池Hikari配置

    在项目中 一般情况下访问数据库 会创建一个连接 用完后就关闭它 对于简单的系统这样不会带来什么明显的性能上的开销 但是对于一个复杂的系统 频繁的建立 关闭连接 会极大的减低系统的性能 因为对于数据库连接的使用可能会成为系统性能的瓶颈 数据库
  • MATLAB2017a使用FasterRcnn目标检测训练及其测试流程

    本文在matlab2017a已有的FasterRcnn算法基础上来检测人群 流程比较简单 对一些初学者来说比较容易理解和操作 1 安装所需要的软硬件环境 1 1 硬件环境 CPU Intel i5 GPU GTX940m 内存 4G 硬盘
  • Java 8使用Steam().map()提出List对象的某一列的值及重新排序

    这几天遇到一个这样的问题 本来想着是从map中拿到数据在遍历出来的的 但是显得自己很麻烦 于是找了很多方式 测试各个方法的可用性 这里就简单记录一下一些Java8里面的好用的一些方法 Java8 使用 stream map 提取List对象
  • QT开发 - 信号槽写法

    1 Lambda写法 非重载函数 QCheckBox checkBox1 new QCheckBox check box1 connect checkBox1 QCheckBox stateChanged int state m statu
  • 类的访问权限-public、private、protected

    访问权限 protected 保护 访问权限 为什么要使用protected访问权限 子类的成员函数中 不能直接访问父类的private成员 已经这些成员已经被继承下来了 但是却不能访问 只有通过父类的public函数来间接访问 不是很方便
  • Windows server 2008搭建文件服务器

    服务器达到要求 各部门只能访问自己部门服务器 公司员工只能读取和修改文档 普通用户限制磁盘空间是20M 部门经理50M 总经理不受限制 市场部文件允许读取和修改 不能删除 限制电影 照片文件格式 完成数据备份 并模拟数据丢失进行还原 总体思
  • Protobuf Java (1)

    参考 https developers google cn protocol buffers docs javatutorial 目录 1 定义protobuf 文件 2 编译你的 Protocol Buffers 3 ProtoBuf A
  • git源代码泄露

    需要的工具 kali githack win版没下载成功 安装方法 kali命令行中输入 git clone https github com lijiejie GitHack 下载成功如下 输入GitHack 然后输入python Git
  • Java文件输入流如何才能一行一行读取,一行一行写入

    文件输入流 而且和行有关 那么就必须要想到使用Buffered缓冲流了 BufferedReader和BufferedWriter这两个类里面有很重要的方法 BufferedReader里是readLine BufferedWriter里是
  • UE4 通过Echarts实现各种统计图

    主要内容 本文主要讲解UE4 UMG向网页发送数据 通过WebBrowser插件将用Echarts定制好的统计图在UE4内展现出来 达到数据可视化的效果 本文主要演示柱形图的效果 其它类型的统计图可以结合Echarts官方案列以及文档自行修
  • springboot整合JSR303校验

    4 7 JSR303校验 4 7 1 统一校验的需求 前端请求后端接口传输参数 是在controller中校验还是在Service中校验 答案是都需要校验 只是分工不同 Contoller中校验请求参数的合法性 包括 必填项校验 数据格式校
  • coalesce 函数详解与学习记录

    1 在工作中都用到了此函数 特此学习并记录一下 2 coalesce 用途 1 将空值替换成其他值 2 返回第一个非空值 3 SQL实例 一 select coalesce success cnt 1 from tableA 当succes