如何确定SQL表行包含NULL以外的值

时间:2010-08-02 10:12:36

标签: sql sql-server

这是问题所在:

我有一个包含未知列数的表。所有列都是真实的。

假设该表中只有一行,我需要一个方法来确定该表/行中是否存在NULL以外的值。

我不知道在运行时列的数量和名称(并且不想使用c光标)

SQL Server 2005

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

这是一种方法 - 如果行中的所有值都为NULL,则CHECKSUM()不返回任何值:

create table #t (col1 real, col2 real, col3 real)
select checksum(*) from #t
if @@rowcount = 0
    print 'All values are NULL'
else
    print 'Non-NULL value(s) found'
drop table #t

另一方面,我真的不知道这是不是你正在做的事情:“内存中的临时表”听起来像是你自己管理的东西。有了您想要实现的目标的更多信息,我们可能会建议更好的解决方案。

顺便说一句,用于存储设置的单行表没有任何问题。它的一大优点是每个设置都有一个单独的数据类型,可以有CHECK约束等。

答案 1 :(得分:0)

听起来你正在做某种设置/属性表,基于你知道你只有1行的事实。如果你需要动态属性,这是错误的方法;而是有一个包含2列的表格:optionvalue。然后,对于每个动态属性,您将存储一行。