【问题标题】:How to select all values and hide NULL values in SQL?如何在 SQL 中选择所有值并隐藏 NULL 值?
【发布时间】:2012-06-23 10:54:47
【问题描述】:

所以在我的数据库中,一些行具有 NULL 值,当我从表中选择 * 时,该 NULL 值也显示为文本“null”。所以我想隐藏所有 NULL 值。有没有人有查询的想法?谢谢!

这是我在 DB 中的输入:

db.execSQL("CREATE TABLE IF NOT EXISTS table (name VARCHAR, kg VARCHAR,   pod                 VARCHAR,reps VARCHAR, time VARCHAR );");
  db.execSQL("INSERT INTO table VALUES('name 1',NULL,NULL , NULL , '"+s+"');");
 db.execSQL("INSERT INTO table VALUES(NULL,'S 1','"+ee5+"' , '"+ee+"' , '"+s+"');");
 db.execSQL("INSERT INTO table VALUES(NULL,'S 2','"+ee6+"' , '"+ee2+"', '"+s+"');");
 db.execSQL("INSERT INTO table VALUES(NULL,'S 3','"+ee7+"' , '"+ee3+"', '"+s+"');");
 db.execSQL("INSERT INTO table VALUES(NULL,'S 4','"+ee8+"' , '"+ee4+"', '"+s+"');");

【问题讨论】:

  • 要隐藏文本“null”并显示空数据,您必须进入客户端的设置/首选项
  • @DheereshSingh 但如果我这样做,那么我有 NULL 值的所有列都不会显示,我只想隐藏具有 NULL 值的字段
  • @deathApril 我在 Eclipse 工作。设置/首选项在哪里?
  • eclipse不是SQL客户端,是指Eclipse SQL Explorer吗?我没有,但是在 Window > SQL Explorer > SQL Editor 下寻找一个选项,或者当您右键单击 null 值时 - 如果没有更改 值显示的选项,请使用以下选项之一case / ifnull / nvl / coalesce 答案

标签: sql sqlite


【解决方案1】:

这取决于列的数据类型。

-- If the data type is integer:
SELECT COALESCE(the_column, 0)
FROM the_table;

-- or, if the column is a char or varchar type:
SELECT  COALESCE(the_column, 'some text here')
FROM the_table;

-- or, if it is a date:
SELECT  COALESCE(the_column, '1900-01-01')
FROM the_table;

顺便说一句:有些数据库有 IFNULL() 函数,它做同样的事情。

【讨论】:

    【解决方案2】:

    这就是你要找的东西:

    SELECT x, y, etc, CASE WHEN field IS NOT NULL THEN field ELSE '' END AS hehe FROM table;
    

    编辑:添加到您的 cmets,一旦您知道如何为一列执行此操作,这将非常简单。对所有列应用相同的内容。所以不要指望家庭作业能完成,而是期待帮助解决你的问题,最终你自己必须做。

    顺便说一句,这是怎么回事..

    SELECT COALESCE(name, ''), COALESCE(kg, ''), COALESCE(pod, ''), COALESCE(reps, ''), 
           COALESCE(time, '') 
    FROM   table
    

    你在这个线程中有三个很好的方法(包括我的),我个人觉得另外两个更直观。通过应用与我展示的相同的逻辑来使用 any。

    【讨论】:

    • 我编辑了帖子,这是我的代码,根据我的代码,我需要用什么替换“字段”
    • @user1414682 你想隐藏哪个字段?所有字段的 NULL 值?
    • 我不知道光标捕捉到了什么。在安卓圈子里搜索它,或者谷歌它。应该是微不足道的。
    • 非常感谢,你们都非常有帮助,我的代码中也有光标,所以我必须在查询中添加别名,以便光标可以识别字段
    • mm 很高兴知道@user1414682,无论如何,如果遇到更多麻烦,您必须将其作为一个单独的问题,因为您在这里提出的问题已经得到很好的回答。现在是时候接受您的首选答案了! :)
    【解决方案3】:

    在 SQLite 中,您应该能够执行以下操作:

    SELECT col1, col2, ..., ifnull(coln, '') FROM TABLE
    

    【讨论】:

    • 取自this source;我对 SQLite 了解不多
    • nawfal 的解决方案也有效,它独立于 DBMS,是纯 SQL。
    • 使用标准的coalesce而不是ifnull(语法相同,但可能超过2列)
    【解决方案4】:
    SELECT* FROM TableName
    WHERE ValueCol IS NOT NULL
    

    http://www.w3schools.com/sql/sql_null_values.asp

    如果你正在使用 sqlite for android

    看看这个Article

    【讨论】:

    • @Mido 但如果我这样做,那么我有 NULL 值的所有列都不会显示,我只想隐藏具有 NULL 值的字段
    猜你喜欢
    • 1970-01-01
    • 2010-11-07
    • 2017-05-14
    • 2023-03-27
    • 2012-06-27
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    相关资源
    最近更新 更多