【发布时间】:2011-06-09 12:14:54
【问题描述】:
好的,我知道这个问题了:
当 SET ANSI_NULLS 为 ON 时,所有与空值的比较结果为 UNKNOWN
- SQL And NULL Values in where clause
- 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(字符串连接),这样做似乎很痛苦。还有其他解决方案吗?
我将在WHERE 比较中恢复所有具有NULL 值的行。
更新
给我带来问题的查询示例:
string query = col_1 not in ('Dorothy', 'Blanche') and col_2 not in ('Zborna', 'Devereaux')
grid.DataContext = dataTable.Select(query).CopyToDataTable();
(如果/当col_1 = null 和/或col_2 = null 时不检索行)
【问题讨论】:
-
请举例说明导致您遇到问题的查询类型。
-
如果你的列都是字符串,一个非常肮脏的方法是创建一个列,它是你查询的所有列的连接,然后检查它是否为空:)
-
如果您必须对许多相同类型的列执行相同的测试,我的猜测是这些值应该放在一个单独的表中,并带有第一个表的外键。但在您发布表模式之前,无法确定。
-
仅供参考:我不是在查询实际的 DBMS!!!