标签: isnull

在TSQL中使用ISNULL的可疑查询

我希望在我的查询中防止不可搜索的表达式,这是检查空条件的更好方法吗?

AND c.Account IS NOT NULL 
AND c.Account <> ''
Run Code Online (Sandbox Code Playgroud)

要么

AND ISNULL(c.Account,'') <> ''
Run Code Online (Sandbox Code Playgroud)

我突然意识到Account它来自一个LEFT JOIN所以它可能是空的.我想要他们只相交的情况,这意味着我真的应该用一个INNER JOIN吧?谢谢你的facepalms;)

然而,忽视了肉麻的自我实现,我还是想知道在一般情况下,我不能让这个问题的答案AccountNOT NULL列.

t-sql sql-server isnull

6
推荐指数
1
解决办法
3446
查看次数

django按isnull值排序?

我有一个datetime字段,可以为null,id就像做qs.order_by('field__isnull','name'),但这导致:

Join on field 'field' not permitted. Did you misspell 'isnull' for the lookup type?

这有可能吗?

django isnull

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

MySQL - 选择具有空列的行

如何选择包含空列或空列的任何行?

我正在尝试在我的桌子上运行检查,我想在其中查看我的任何行是否包含不包含值的列.

示例表:demo

+----+------+------+
| ID | col1 | col2 |
+----+------+------+
| 1  | VAL1 | Val2 |
| 2  | NULL | Val2 |
| 3  | VAL1 | NULL |
+----+------+------+
Run Code Online (Sandbox Code Playgroud)

我希望查询返回2-3行,注意我在实际表中有很多列,所以我不想在'where或'的查询中包含它.

可以用mysql完成吗?

mysql sql select isnull

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

为十进制类型的Null抛出错误分配值

使用SQL Server 2016

我目前正在支持一个旧的导入例程,该例程包装了许多动态列,ISNULL以整理丢失的数据。

该代码在动态SQL中生成,并提供以下格式的字符串:

ISNULL(ColumnName, '') ColumnName
Run Code Online (Sandbox Code Playgroud)

我刚遇到一个实例,它已经落在了上面,即在十进制或数字列上。但是,这对于整数,浮点数,实数甚至日期都可以正常工作。我可以引入更多代码来替换''0但我不明白为什么它适用于浮点数和实数,但不适用于小数或数字。

例如看一下:

DECLARE @Test1 AS TABLE (Val FLOAT NULL);           
DECLARE @Test2 AS TABLE (Val INT NULL);             
DECLARE @Test3 AS TABLE (Val REAL NULL);    
DECLARE @Test4 AS TABLE (Val Date NULL);    

DECLARE @TestWillFail AS TABLE (Val DECIMAL(19,6) NULL);   

INSERT INTO @Test1 VALUES (NULL)
INSERT INTO @Test2 VALUES (NULL)
INSERT INTO @Test3 VALUES (NULL)
INSERT INTO @Test4 VALUES (NULL) 
INSERT INTO @TestWillFail VALUES (NULL) 

SELECT ISNULL(Val, '') VAL …
Run Code Online (Sandbox Code Playgroud)

sql-server null decimal isnull

6
推荐指数
1
解决办法
59
查看次数

Crystal Reports公式:IsNull + Iif

在这个网站上有这个问题的答案提示,但我问的是一个稍微不同的问题.

Crystal Reports在哪里记录此语法不起作用?

Trim({PatientProfile.First}) + " "
    + Trim(Iif(
        IsNull({PatientProfile.Middle}) 
        , Trim({PatientProfile.Middle}) + " "
        , " "
        )
    )  
+ Trim({PatientProfile.Last})
Run Code Online (Sandbox Code Playgroud)

我知道解决方案是

If IsNull({PatientProfile.Middle}) Then
    Trim({PatientProfile.First})
        + " " + Trim({PatientProfile.Last})
Else
    Trim({PatientProfile.First})
       + " " + Trim({PatientProfile.Middle})
       + " " + Trim({PatientProfile.Last})
Run Code Online (Sandbox Code Playgroud)

但我们怎么想弄清楚我们不能使用第一个版本?

IsNull的文档说

  • 计算当前记录中指定的字段,如果该字段包含空值,则返回TRUE

而Iif给出了

  • [返回]如果expression为True则返回truePart,如果expression为False则返回falsePart.返回值的类型与truePart和falsePart的类型相同.

我想如果你盯着关于"返回值类型"的那一行你可以得到它,但是......

iif-function isnull crystal-reports

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

在合并语句中比较 Null 与 Null

在处理数十亿条记录以比较合并语句中的 NULL 时,哪种语句是完美或更好的。我尝试过 SET ANSI_NULLS OFF 但这在合并语句中不起作用。这是我的两种方法

ISNULL(SRCColumn,-11111) = ISNULL(DSTColumn, -11111)
Run Code Online (Sandbox Code Playgroud)

或者

SRCColumn = DSTColumn OR (SRCColumn  IS NULL AND DSTColumn  IS NULL)
Run Code Online (Sandbox Code Playgroud)

请告诉我是否有更好的方法来处理。因为我有大约 15 列需要比较。

isnull sql-server-2008-r2 merge-statement

5
推荐指数
1
解决办法
4499
查看次数

SQL Server NULL整数到使用ISNULL的空字符串

我的好奇心总是得到我最好的满足,我在网上搜索了对此的解释,但一无所获(可能是因为我没有使用正确的术语。)

有人可以解释一下为什么执行以下命令时SQL Server返回零(0)而不是空字符串('')的原因。

    DECLARE @I AS INT
    SET @I = NULL
    SELECT ISNULL(@I, '') -- 0
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server string isnull

5
推荐指数
1
解决办法
6871
查看次数

MySQL - 哪种方法更好地检查列是否为空或为空

好吧,当我们要选择列中不包含任何内容的记录时,我们可以使用:

SELECT * FROM my_table WHERE NULLIF(my_column, '') IS NULL;
Run Code Online (Sandbox Code Playgroud)

但是,在大多数情况下,我看到开发人员使用这个:

SELECT * FROM my_table WHERE my_column IS NULL OR my_column = ''
Run Code Online (Sandbox Code Playgroud)

这两者之间有什么偏好吗?(例如性能、默认支持、版本支持等)

如果是,请解释一下。

mysql isnull

5
推荐指数
1
解决办法
4165
查看次数

条件没有ISNULL臭吗?

我遇到一篇文章描述了SQL代码可能不正确的不同情况.但是,有一点令我感到惊讶.他们声称

通过使用COALESCE提供默认值,明智地处理可空列中的NULL是明智的

ISNULL也被提到了.他们还参考了这个MSDN网页,给出了一个例子ISNULL.这里的基本思想是使用它更好

SELECT COUNT(*) FROM [dbo].[Table1] WHERE ISNULL([c2],0) > 2;
Run Code Online (Sandbox Code Playgroud)

然后

SELECT COUNT(*) FROM [dbo].[Table1] WHERE [c2] > 2;
Run Code Online (Sandbox Code Playgroud)

但是,第一个变体不是SARG,而结果不受任何影响ISNULL.我理解需要处理NULL使用ISNULLCOALESCE输出,但是,我总是尝试使用IS NULLIS NOT NULL处理NULL谓词.我错过了什么吗?MSDN问题有什么意义?

编辑:为了对讨论做出反应,主要是在这篇文章中,我准备了一个简单的测试

 IF OBJECT_ID('dbo.LogTable', 'U') IS NOT NULL  DROP TABLE dbo.LogTable

 SELECT TOP 100000 DATEADD(day, ( ABS(CHECKSUM(NEWID())) % 65530 ), 0) datesent ,
      CASE WHEN ( ABS(CHECKSUM(NEWID())) % 100 ) = 1 THEN …
Run Code Online (Sandbox Code Playgroud)

sql sql-server select isnull

5
推荐指数
1
解决办法
106
查看次数

HQL中的IsNull是什么?

如何编写像这样的SQL查询的HQL查询?

SELECT IsNull(name, '') FROM users
Run Code Online (Sandbox Code Playgroud)

当我搜索HQL IsNull时,所有结果均为IS NULL或IS NOT NULL

sql hibernate hql isnull

5
推荐指数
1
解决办法
2147
查看次数