Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-选择具有值的行_Sql_Database_Ms Access - Fatal编程技术网

SQL-选择具有值的行

SQL-选择具有值的行,sql,database,ms-access,Sql,Database,Ms Access,我有一个由许多列和行组成的表。我的问题是,我想选择一个特定的列,然后获取包含所有非空值的行 我(到目前为止)的正确陈述如下: SELECT * FROM table_name WHERE col_1 = "Apotheken" SELECT * FROM table_name WHERE col_1 = "Apotheken" AND col_2 IS NOT NULL AND col_3 IS NOT NULL ... AND col_n IS NOT NULL 这将返回正确的行及其所

我有一个由许多列和行组成的表。我的问题是,我想选择一个特定的列,然后获取包含所有非空值的行

我(到目前为止)的正确陈述如下:

SELECT * 
FROM table_name
WHERE col_1 = "Apotheken"
SELECT * 
FROM table_name
WHERE col_1 = "Apotheken"
AND col_2 IS NOT NULL
AND col_3 IS NOT NULL
...
AND col_n IS NOT NULL
这将返回正确的行及其所有(非)值。 但是我如何从这一行中得到非空值呢?我可以这样写:

SELECT * 
FROM table_name
WHERE col_1 = "Apotheken"
SELECT * 
FROM table_name
WHERE col_1 = "Apotheken"
AND col_2 IS NOT NULL
AND col_3 IS NOT NULL
...
AND col_n IS NOT NULL
正如我所说的,专栏太多了。有没有办法只选择具有实际值的列


提前谢谢

您可以这样做,这样可以节省一些输入:

SELECT * 
FROM table_name
WHERE col_1 = "Apotheken"
AND (col_2 + col_3 + col_4 + ... + col_n) IS NOT NULL
或作为多用途视图:

SELECT * 
FROM table_name
WHERE (col_2 + col_3 + col_4 + ... + col_n) IS NOT NULL

创建视图

您只需创建一个
视图
,即可避免在编写的每个查询中键入这些条件

CREATE VIEW view_table_not_null AS (  
  SELECT *  
  FROM table  
  WHERE col_1 IS NOT NULL  
    AND col_2 IS NOT NULL  
    AND col_N IS NOT NULL  
);  
然后,您可以从
视图
中选择
,而无需写入
,其中。。。在每个查询中不为NULL
,以免费获取
不为NULL
。创建一次,到处使用。经典的
视图

SELECT *  
FROM view_table_not_null  
WHERE col_3 = 'Apotheken';  
将列更改为非空

ALTER TABLE column_4 SET NOT NULL;

不能在非动态查询中有条件地选择列。我相信这需要动态SQL。但是你可以在你的表示层中处理这个问题。@Malte Hartwig我知道,但我需要该行中的所有列(col_1=“Apotheken”)它是的副本。是的,“解决方案”和建议不适用于这里。该表已标准化。我只是想知道是否可以选择那些值而不在代码中处理这个问题(或手动键入>20列)。问题可能是,您的列可
为null
ALTER TABLE column_4是否设置为NOT NULL
不可能?如果您只是查询,您可以使用
视图
中隐藏的
列不为空
创建视图
?谢谢大家的建议。显然,您无法使用MS Access创建视图。我尝试了
中的“丑陋”方式,其中col_1=“Apotheken”和col_2不为NULL,但它只返回行中没有值的所有列。为什么会这样/