好,我有如下表称为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