2010-08-02 68 views
0

这就是问题所在:如何确定一个SQL表行包含NULL以外的值

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

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

我不知道在运行时的列数,也没有他们的名字(不要想用c光标)

SQL Server 2005中

我感谢你的帮助。

+8

“我有一个列数未知的表。” - 有你的问题!表应该有一个已知数量的列...听起来像是滥用正常形式...没有列名的 – 2010-08-02 10:13:51

+0

你如何定义条件你必须在这里使用循环或光标。 – KuldipMCA 2010-08-02 10:17:58

+0

-1:“我不知道运行时的列数和名称。假。你可以通过查看表格定义来了解这一点。不要试图写出在这些不可能的条件下工作的神奇软件。 – 2010-08-02 10:18:49

回答

1

这里有一种方法 - 如果行中的所有值均为NULL校验和()没有返回值:

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约束等。

+0

谢谢,似乎如果有一行的空值有一个校验和值。在你的例子中,根本没有行,所以返回值是空的,但是你给了我一个关于如何解决问题的好主意。 – Gilad 2010-08-05 13:55:25

0

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

+0

我同意这是一个更好的方法,但问题是,这个问题是一个更大的过程的一部分,它正在寻找一个补丁或重新设计可能需要分配时间的整个过程。 – Gilad 2010-08-02 10:23:04

相关问题