sql—选择报表中没有空值的查询

py49o6xq  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(333)

工作台部件

PartCode, PartName, Code1,Code2,Code3,Code4,Code5,Code6

00120,Test,15,null,24,35,12,null

我想在我的报告里

00120,Test,15,24,35,12

只有不为空

lhcgjxsq

lhcgjxsq1#

您应该使用不为空(比较运算符=和<

SELECT * 
FROM table 
WHERE YourColumn IS NOT NULL;

为了完整起见,我要提到的是,在mysql中,还可以否定空安全相等运算符,但这不是标准sql。

SELECT *
FROM table 
WHERE NOT (YourColumn <=> NULL);

编辑以反映评论。听起来您的表可能不是第一个正常形式,在这种情况下,更改结构可能会使您的任务更容易。不过还有其他一些方法。。。

SELECT val1 AS val
FROM  your_table
WHERE val1 IS NOT NULL
UNION ALL
SELECT val2 
FROM  your_table
WHERE val2 IS NOT NULL

/以此类推,对于所有列/上述方法的缺点是,它为每一列多次扫描表一次。下面的代码可能可以避免这种情况,但我还没有在mysql中测试过。

SELECT CASE idx
         WHEN 1 THEN val1
         WHEN 2 THEN val2
       END AS val
FROM   your_table
        /*CROSS JOIN*/
       JOIN (SELECT 1 AS idx
                   UNION ALL
                   SELECT 2) t
HAVING val IS NOT NULL

/在mysql中可以引用别名/
请点击此处查看全文:
https://stackoverflow.com/a/5285461/5837967
查询不能排除select中声明的列

如果不显示整个列,如何得到“code2”结果?

相关问题