当前位置: 首页 > 面试题库 >

MySQL SELECT仅非空值

韩豪
2023-03-14
问题内容

是否可以执行仅包含NOT NULL值的select语句?

现在我正在使用这个:

SELECT * FROM table

然后,我必须用php循环过滤掉空值。

有没有办法做:

SELECT * (that are NOT NULL) FROM table

现在,当我选择*时,我得到val1,val2,val3,null,val4,val5,null,null等。但是我只想获取结果中不为null的值。没有循环过滤就可以吗?


问题答案:

您应该使用IS NOT NULL。(比较操作符=<>两个给定UNKNOWNNULL上表达的任一侧)。

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
/*And so on for all your columns*/

上面的缺点是,它为每列多次扫描表一次。下面可能会避免这种情况,但是我还没有在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  /*Can reference alias in Having in MySQL*/


 类似资料:
  • 我使用了Gson,但我需要转换器只序列化非空值或非空值。 例如: 现在,将该对象转换为json的Gson实例如下所示

  • 我想知道是否有一个衬里可能像这样 我只是检查名字、姓氏等是否为空。如果我有几个这样的字段呢? 因此,如果我写入,我不想用空值更新任何字段 如果我的字段为空,是否有任何可能的替代方案可以告诉object spread或任何其他内容不要更新?

  • 问题内容: 我正在寻找用不间断空格替换多个空格的Java正则表达式。应使用相同数量的不间断空格替换两个或多个空格,但不应替换单个空格。这需要适用于任意数量的空格。并且第一个字符可以是1个或多个空格。 因此,如果我的字符串像这样开始: 我需要新的String看起来像这样: 问题答案: 您也可以一起跳过正则表达式。 我还没有测试过,但是第一个发现了两个空格的所有情况,并用不间断的空格替换了它们。第二种

  • 问题内容: 从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 在sql数据库列中,除非我们使用指定,否则将将空字段设置为。用一种代替另一种的优点是什么?谢谢! 问题答案: 如果需要在列中表示未知数据,请使其为可为空

  • 我有一个对象列表,比如。我想根据使用Java 8的一些参数过滤这个列表。但如果参数为,则抛出。如何过滤掉空值? 当前代码如下 如果返回,则抛出。

  • 大家在使用 Lua 的时候,一定会遇到不少和 nil 有关的坑吧。有时候不小心引用了一个没有赋值的变量,这时它的值默认为 nil。如果对一个 nil 进行索引的话,会导致异常。 如下: local person = {name = "Bob", sex = "M"} -- do something person = nil -- do something print(person.name)