好,我有如下表稱爲Foo
這是一個複雜PIVOT
查詢SQL動態WHERE子句
我需要刪除該表具有行(DB1,DB2,DB3的輸出)全部NULL
。要做到這一點,我們通常可以使用類似
DELETE FROM Foo
WHERE [DB1] IS NULL
AND [DB2] IS NULL
AND [DB3] IS NULL;
但問題是,這個代碼是從C#和列(DB1,DB2,DB3)呼籲將執行到執行改變。
我該如何動態地做到這一點?
謝謝你的時間。
Edit1。我有另一個表Bar
,其中包含可用的DB#
列,因此可以使用此表SELECT DISTINCT ...
獲取我在WHERE
子句中需要的列的列表。但是,我從來沒有這樣做過,不知道從哪裏開始...任何幫助表示讚賞。
Edit2。我無法以任何方式使用C#。 C#代碼是SQL的解析器,可以與給定的.sql文件一起使用。這必須完全在SQL中完成。
謝謝你。它給了我一些想法,但這裏仍然存在名稱問題。如何得到它?你的子串從5開始,爲什麼?名稱的長度(即DB1等)是可變長度的。謝謝你的時間。 – MoonKnight 2012-07-20 15:25:26
該字符串從5開始,因爲它在開始時由一個額外的'AND'構建。如果你想要的話,你可以把這段代碼放到一個存儲過程中,並按照這種方式調用 - 參見編輯。或者你的意思是如何到達sql?只需取消註釋sp_execute sql行。 – podiluska 2012-07-20 15:31:52
它將在SP中。但問題仍然存在,即使您提供了什麼 - 我如何獲取所需的列名。請參閱Edit1。再次感謝您的時間。 – MoonKnight 2012-07-20 15:33:39