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,但它只返回行中没有值的所有列。为什么会这样/