我有一个包含历史值的表,有些包含所有值都为null的列。我正在尝试删除所有值为null的所有列。在此数据集中,空值由“..”表示,并且有733条记录。
我的问题是不知道如何引用未知的列名。下面的查询是我最近尝试确定在开始删除列之前是否可以选择正确的信息。
SELECT *, COUNT(*)
FROM table
WHERE * = ".."
有人有什么想法吗?
答案 0 :(得分:1)
正如奥利维尔写的那样,SQL本身就不会这样做。最简单的方法是循环字段集合并在每个字段上使用DCount,使用ORDER BY trim(level1)
之类的标准来查找仅具有[field name] <> '..'
的所有列。
'..'
答案 1 :(得分:0)
您无法使用SQL完成此任务。您可以通过循环Fields集合打开记录集并测试每条记录的所有列。
但是如果你只有733条记录,最简单的方法是在访问中打开表,选择所有列并应用Sort Ascending。然后,您将看到首先显示的空行。手动删除它们。
答案 2 :(得分:0)
是的...你不能让它返回记录,其中单个列只是'..'
值。您需要查询列。
像
这样的东西Select '
count(*),
sum(iif(f1='..',1,0)),
sum(iif(f2='..',1,0)),
...
FROM table
看看是否有任何列与总数匹配,那么你就有了一个可以使用的列。