這就是問題所在:如何確定一個SQL錶行包含NULL以外的值
我有一個列數未知的表。所有的列都是真實的。
假設該表中只有一行,我需要一個方法來確定在該表/行中是否存在NULL以外的值。
我不知道在運行時的列數,也沒有他們的名字(不要想用c光標)
SQL Server 2005中
我感謝你的幫助。
這就是問題所在:如何確定一個SQL錶行包含NULL以外的值
我有一個列數未知的表。所有的列都是真實的。
假設該表中只有一行,我需要一個方法來確定在該表/行中是否存在NULL以外的值。
我不知道在運行時的列數,也沒有他們的名字(不要想用c光標)
SQL Server 2005中
我感謝你的幫助。
這裏有一種方法 - 如果行中的所有值均爲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約束等。
謝謝,似乎如果有一行的空值有一個校驗和值。在你的例子中,根本沒有行,所以返回值是空的,但是你給了我一個關於如何解決問題的好主意。 – Gilad 2010-08-05 13:55:25
聽起來像你正在做某種設置/屬性表,基於你知道你只有1行的事實。如果你需要動態屬性,這是錯誤的做法;取而代之的是具有2列的表格:option
和value
。然後,對於每個動態屬性,您將存儲一行。
我同意這是一個更好的方法,但問題是,這個問題是一個更大的過程的一部分,它正在尋找一個補丁或重新設計可能需要分配時間的整個過程。 – Gilad 2010-08-02 10:23:04
「我有一個列數未知的表。」 - 有你的問題!表應該有一個已知數量的列...聽起來像是濫用正常形式...沒有列名的 – 2010-08-02 10:13:51
你如何定義條件你必須在這裏使用循環或光標。 – KuldipMCA 2010-08-02 10:17:58
-1:「我不知道運行時的列數和名稱。假。你可以通過查看錶格定義來了解這一點。不要試圖寫出在這些不可能的條件下工作的神奇軟件。 – 2010-08-02 10:18:49