当字段具有 NULL 值时 SQL WHERE 子句不返回行

2024-01-02

好的,所以我知道这个问题:

当 SET ANSI_NULLS 为 ON 时,所有针对空值的比较结果均为 UNKNOWN

  • SQL 和 where 子句中的 NULL 值 https://stackoverflow.com/questions/3937562/sql-and-null-values-in-where-clause
  • SQL Server 返回不等于 值且为 NULL 的行 https://stackoverflow.com/questions/4453622/sql-server-return-rows-that-are-not-equal-to-a-value-and-null

但是,我正在尝试查询DataTable.

我可以添加到我的查询中:

OR col_1 IS NULL OR col_2 IS NULL

对于每一列,但我的表有 47 列,并且我正在构建动态 SQL(字符串连接),而且这样做似乎很痛苦。还有其他解决方案吗?

我要带回所有有的行NULL中的值WHERE比较。

UPDATE

给我带来问题的查询示例:

string query = col_1 not in ('Dorothy', 'Blanche') and col_2 not in ('Zborna', 'Devereaux')
grid.DataContext = dataTable.Select(query).CopyToDataTable();

(如果/当col_1 = null and/or col_2 = null)


所以你的意思是(有两列的例子)

WHERE (col1 = 'abc' or col1 is null)
  AND (col2 = 3 or col2 is null)

但您想始终包含空值吗? 这应该有效

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

当字段具有 NULL 值时 SQL WHERE 子句不返回行 的相关文章

随机推荐