问题标签 [coalesce]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8385 浏览

sql-server - 在 SQL 视图中使用 COALESCE

我需要从几个表中创建一个视图。视图中的一列必须由其中一个表中的许多行组成,作为具有逗号分隔值的字符串。

这是我想做的一个简化示例。

客户和订单之间存在一对多的关系。所以鉴于这些数据

我想要一个像这样的视图:

这样每个人都会出现在表格中,无论他们是否有订单。

我有一个存储过程,需要将其转换为该视图,但您似乎无法在视图中声明参数并调用存储过程。有关如何将此查询纳入视图的任何建议?

0 投票
5 回答
3905 浏览

clojure - Clojure 合并函数

SQL 提供了一个调用函数coalesce(a, b, c, ...),如果它的所有参数都为 null,则返回 null,否则返回第一个非 null 参数。

你会如何在 Clojure 中编写这样的东西?

它将被称为:(coalesce f1 f2 f3 ...)where是仅在需要时才应评估fi的表单。如果是非零,那么不应该被评估——它可能有副作用。f1f2

也许 Clojure 已经提供了这样的函数(或宏)。

编辑:这是我想出的一个解决方案(从 Stuart Halloway 的 Programming Clojure 修改,(and ...)第 206 页的宏):

似乎工作。

固定的。

0 投票
6 回答
10629 浏览

sql - 如果一列为 Null,则 SQL 返回 Null(与 COALESCE() 相反)

在此之前,我想对您的帮助表示感谢。这是一个很棒的社区,我在这里找到了许多编程答案。

我有一个包含多个列的表,其中 5 个包含日期或空值。

我想编写一个 sql 查询,基本上将 5 列合并为 1 列,条件是如果 5 列中的 1 列包含“NULL”值,则返回值为 null。本质上与返回第一个非空值的合并条件相反,我想返回第一个空值。如果没有一个为空,返回 5 个日期中最大的一个将是最佳的,但是我可以解决返回 5 个日期中的任何一个。

查询返回:

非常感谢。

(服务器为MSSQL2008)

0 投票
7 回答
62387 浏览

sql-server - 如果不是 Null,则检查输入参数并在 SQL Server 的 where 中使用它

在子句中包含输入参数WHERE但如果它为空则将其排除的最佳方法是什么?

我相信有很多方法,但我当时似乎不记得了。

我也可以使用COALESCE()吗?但我认为这仅适用于选择值?

编辑

为了澄清,假设一个名为@code ="1"then my where的变量,Where type='B' AND code = @code但如果@code is null那时我只想Where type='B'- 注意缺少的code = @code.

0 投票
0 回答
4072 浏览

sql - T-SQL SELECT 将多行合并为一列

这是运行 SQL Server 2008 的词库数据库,其中术语和类别相互链接。分层数据。简单的三个表:

现在按类别代码提取一些描述符(带有引用的术语):

结果相当混乱:

等等等等……

我希望它在单个输出列中看起来像这样:

似乎 UNPIVOT 不适合。也许 CTE + COALESCE?

有没有办法根据模式将行转换为一列:

0 投票
2 回答
3512 浏览

select - CASE 表达式中的嵌套 SELECT 语句

问候,

这是我的问题。
我需要从多行中获取数据并将它们作为单个结果返回到更大的查询中。

我已经在这里发布了一个类似的问题。 在主查询的一列中返回多个值,但我怀疑我缺乏 SQL 知识使问题过于模糊,因为答案不起作用。
我正在使用 Microsoft SQL 2005。
这就是我所拥有的。

以 CaseID 为 PK 的多个表,CaseID 是唯一的。
一张表 (tblKIN),其中 CaseID 和 ItemNum(AutoInc) 作为组合 PK。
因为数据库中的每个人都可能有不止一个亲戚。
如果我在 SQL 查询窗口中运行以下命令,它就可以工作。

这将返回所有住在同一地址的人的关系。结果看起来像这样......
父亲,侄女,妹妹,儿子

现在,我的问题是如何将它添加到我的主查询中?
缩短为相关信息,主要查询如下所示。

我收到的错误是。
服务器:消息 156,级别 15,状态 1,第 13 行
关键字“DECLARE”附近的语法不正确。
服务器:消息 156,级别 15,状态 1,第 18 行
关键字“ELSE”附近的语法不正确。

我尝试在括号内嵌套从 DECLARE 到 SELECT @KINList 的末尾。
我尝试将 BEGIN 和 END 添加到 CASE 语句的 THEN 部分。
都没有奏效。

源表数据看起来像这样。(为便于阅读添加句号
tblCase
CaseID 名称 地址
10-001 Jim......100 Main St.
10-002 Tom....150 Elm St.
10-003 Abe.....200 1st St.

tblKIN
CaseID ItemNum Name Relation Address
10-001 00001 Steve...Son........100 Main St.
10-002 00002 James..Father..150 Elm St.
10-002 00003 Betty.. ..侄女......150 Elm St.
10-002 00004 Greta...Sister.....150 Elm St.
10-002 00005 Davey..Son........150 Elm St .
10-003 00006 Edgar...Brother...200 1st St.

如果我运行 CaseID = 10-002 的查询,它需要返回以下内容。
CaseID 姓名 地址.......亲戚
10-002 Tom...150 Elm St. ..父亲、侄女、姐妹、儿子

我确信这可能是一个简单的修复,但我只是不知道该怎么做。
感谢您抽出宝贵时间,对于问题的长度,我深表歉意,但我想澄清一下。

谢谢 !!!

0 投票
1 回答
1837 浏览

sql-server-2005 - 将'null' varchar 转换为十进制

我需要在 sql-server-2005 中创建一些 xml 结构(借用一个 C 短语)。为此,我将所有值更改为 varchar。当我想使用这些值时会出现问题,我必须将它们转换为十进制。

所以,我的 xml 代码如下所示:

这样,如果 VAL 为空,我返回一个特殊的小数,我可以检查那个小数。这样做的缺点是,当我使用该值时,我不能在另一端使用 coalesce,我必须检查它转换后的值是否等于 0。像这样:

由于现在的性能是不可接受的,我认为提高性能的一种方法可能是使用 coalesce 而不是使用嵌套的 case 语句,并使用我的特殊“null”等效项检查值是否相等。

有什么想法吗?

另外,我看到 select cast('null' as decimal(10,5)) 给了我:

0 投票
4 回答
2010 浏览

c# - 空合并运算符线程安全吗?

所以这就是问题的核心:Foo.Bar 可以返回 null 吗?为了澄清,'_bar'可以在它被评估为非空之后并且在它的值被返回之前设置为空吗?

我知道使用下面的 get 方法是不安全的,并且可以返回一个空值:

更新:

另一种看待同一问题的方法,这个例子可能更清楚:

再次询问 GetValue(...) 可以返回 null 吗?根据您的定义,这可能是线程安全的,也可能不是线程安全的...我想正确的问题陈述是询问它是否是对值的原子操作... David Yaw 最好地定义了这个问题,即上述函数是等价的到以下:

0 投票
2 回答
996 浏览

sql - COALESCE 不与加入一起使用

我敢肯定有人对此有更好的想法,所以这里是 - 我有一个表,其中有一堆 id (@tbLink) 代表其他表中的行。我试图在这里表达

我的结果是:

但我期待第 1 行是“ProgramA”而不是“Module1”——我在这里遗漏了什么吗?这也是 COALESCE 的正确使用吗?

干杯

麦克风

0 投票
5 回答
5463 浏览

sql - 在 MSSQL 2008 中合并行,

我正在尝试确定 MSSQL 2008 中的最佳方法。

这是我的示例数据

如果按 Id 分组并按 TransDate 排序,我想要活动列的最后一个非 Null 值,以及 TransDate 的 MAX

结果如下:

它就像一个 Coalesce,但在行上,而不是两个值/列。

会有许多其他列也应用了这种类似的方法,所以我真的不想为每个列单独连接。

有任何想法吗?