标签: coalesce

如何在R中有效地实现合并

背景

几种SQL语言(我主要使用postgreSQL)有一个名为coalesce的函数,它返回每行的第一个非空列元素.当表中包含大量NULL元素时,这可以非常有效地使用.

我在R中的许多场景中都遇到过这种情况,当处理不太结构化的数据时,其中包含很多NA.

我自己做了一个天真的实现,但它的速度非常慢.

coalesce <- function(...) {
  apply(cbind(...), 1, function(x) {
          x[which(!is.na(x))[1]]
        })
}
Run Code Online (Sandbox Code Playgroud)

a <- c(1,  2,  NA, 4, NA)
b <- c(NA, NA, NA, 5, 6)
c <- c(7,  8,  NA, 9, 10)
coalesce(a,b,c)
# [1]  1  2 NA  4  6
Run Code Online (Sandbox Code Playgroud)

coalesce在R中有没有有效的方法?

r coalesce

37
推荐指数
6
解决办法
2万
查看次数

检查输入参数是否为空并在SQL Server中的位置使用它

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

我相信有很多方法,但我似乎无法记住.

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

编辑

为了澄清,让我们说一个变量,@code ="1"然后我会在哪里,Where type='B' AND code = @code但如果@code is null那时我只想要Where type='B'- 注意缺失code = @code.

sql-server null coalesce where-clause sql-server-2008

36
推荐指数
6
解决办法
4万
查看次数

是什么 "??" 运营商?

我想知道代码中的??标志C#.它是为了什么?我该如何使用它?

怎么样int??它是一个可以为空的int吗?

也可以看看:

?? Null Coalescing Operator - >合并是什么意思?

c# coalesce operators null-coalescing-operator

31
推荐指数
7
解决办法
2729
查看次数

如何在MySQL中使用Coalesce

这里有点帮助.我真的不明白如何在MySQL中使用这个coalesce

我已阅读第1页how to use coalsece中谷歌搜索结果中的所有页面.

我知道它的含义是它返回它遇到的第一个非null值,否则返回null.

但它对我来说仍然含糊不清.

  1. 为什么我看到返回多个值的查询?是不是只返回了第一个not null值?
  2. 它如何决定基于哪一列?coalesce(column1,column2)?如果第一列为空而其他列不为空怎么办?
  3. 或者,如果我错了或我的语法错误,我该怎么写呢?
  4. 有人可以提供一个如何使用它的非常好的简单示例吗?
  5. 并且当需要使用时.

mysql coalesce

31
推荐指数
2
解决办法
4万
查看次数

如果没有找到记录,则返回零

我在存储过程中有一个查询,它在表中汇总了一些值:

SELECT SUM(columnA) FROM my_table WHERE columnB = 1 INTO res;
Run Code Online (Sandbox Code Playgroud)

在此选择之后,我res用另一个查询检索的整数减去值并返回结果.如果WHERE条款得到验证,一切正常.但如果不是,我的所有函数返回都是一个空列(可能因为我试图减去一个空值的整数).

如果WHERE不满足该条款,如何使我的查询返回零?

sql postgresql null coalesce plpgsql

30
推荐指数
1
解决办法
10万
查看次数

更改SUM返回NULL为零

我有一个存储过程如下:

CREATE PROC [dbo].[Incidents]
(@SiteName varchar(200))
AS
SELECT
(  
    SELECT SUM(i.Logged)  
    FROM tbl_Sites s  
    INNER JOIN tbl_Incidents i  
    ON s.Location = i.Location  
    WHERE s.Sites = @SiteName AND i.[month] = DATEADD(mm, DATEDIFF(mm, 0, GetDate()) -1,0)  
    GROUP BY s.Sites  
)  AS LoggedIncidents

'tbl_Sites contains a list of reported on sites.
'tbl_Incidents contains a generated list of total incidents by site/date (monthly)
'If a site doesn't have any incidents that month it wont be listed.
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是网站本月没有任何事件,因此当我运行此sproc时,我得到为该网站返回的NULL值,但我需要返回一个零/ 0来在图表中使用在SSRS.

我尝试过使用coalesce并且无效.

    SELECT COALESCE(SUM(c.Logged,0))
    SELECT SUM(ISNULL(c.Logged,0))
Run Code Online (Sandbox Code Playgroud)

有没有办法正确地格式化? …

sql null sum coalesce zero

28
推荐指数
3
解决办法
8万
查看次数

null coalesce操作符线程是否安全?

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

    public class Foo
    {
        Object _bar;
        public Object Bar
        {
            get { return _bar ?? new Object(); }
            set { _bar = value; }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我知道使用以下get方法不安全,并且可以返回null值:

            get { return _bar != null ? _bar : new Object(); }
Run Code Online (Sandbox Code Playgroud)

更新:

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

        public static T GetValue<T>(ref T value) where T : class, new()
        {
            return value ?? new T();
        }
Run Code Online (Sandbox Code Playgroud)

并再次询问GetValue(...)是否会返回null?根据你的定义,这可能是也可能不是线程安全的...我猜正确的问题陈述是询问它是否是一个关于价值的原子操作...... David Yaw已经通过说上面的函数等效来定义问题了以下内容:

        public static T GetValue<T>(ref T value) where T : class, new()
        {
            T result = value;
            if …
Run Code Online (Sandbox Code Playgroud)

.net c# coalesce thread-safety

24
推荐指数
1
解决办法
1610
查看次数

返回第一个非空值

我有很多功能:

String first(){}
String second(){}
...
String default(){}
Run Code Online (Sandbox Code Playgroud)

每个都可以返回一个空值,默认值除外.每个功能可以采用不同的参数.例如,第一个可以不带参数,第二个可以接受一个字符串,第三个可以接受三个参数,等等.我想做的是:

ObjectUtils.firstNonNull(first(), second(), ..., default());
Run Code Online (Sandbox Code Playgroud)

问题在于,由于函数调用,这需要进行急切的评估.我想早点退出,在第二个函数之后说(因为函数调用可能很昂贵,想想API调用等).在其他语言中,您可以执行与此类似的操作:

return first() || second() || ... || default()
Run Code Online (Sandbox Code Playgroud)

在Java中,我知道我可以做类似的事情:

String value;
if (value = first()) == null || (value = second()) == null ...
return value;
Run Code Online (Sandbox Code Playgroud)

由于所有的== null检查,这不是非常易读的IMO.ObjectUtils.firstNonNull()首先创建一个集合,然后迭代,只要该函数被懒惰地评估,这是可以的.

建议?(除了做一堆ifs)

java coalesce lazy-evaluation

21
推荐指数
3
解决办法
1万
查看次数

为什么T-SQL ISNULL()截断字符串而COALESCE不是?

鉴于以下内容:

SELECT ISNULL('XY' + NULL, 'ABCDEFGHIJ') -- Outputs ABC (Why?)
SELECT COALESCE('XY' + NULL, 'ABCDEFGHIJ') -- Outputs ABCDEFGHIJ
Run Code Online (Sandbox Code Playgroud)

为什么这些陈述会返回不同的结果?

t-sql sql-server coalesce isnull truncation

19
推荐指数
1
解决办法
7257
查看次数

COALESCE()表示空白(但不是空)字段

我有两个字段,我正在与MySQL的函数COALESCE()进行比较.例如,COALESCE(Field1, Field2).问题是,Field1有时是空白但不是null; 因为它不是null COALESCE(),所以选择Field1,即使它是空白的.在那种情况下,我需要它来选择Field2.

我知道我可以在查询中编写一个if-then-else(CASE)语句来检查这个,但是有一个很好的简单函数,比如COALESCE()blank-but-not-null字段吗?

mysql sql coalesce

17
推荐指数
3
解决办法
2万
查看次数