【问题标题】:MySQL SELECT * FROM (including NULL values)MySQL SELECT * FROM(包括 NULL 值)
【发布时间】:2017-02-23 09:38:10
【问题描述】:

也许我很愚蠢,也许我是个盲人,但我只是一个试图处理 MySQL 某些方面的 Swift 开发人员。

我有一个包含几列的简单表格:

id INT NOT NULL
name VARCHAR NOT NULL
age INT ALLOW NULL
domain VARCHAR NOT NULL 

所以唯一的列“年龄”可能是NULL。当我执行SELECT * 时,我会根据“年龄”值收到(id, name, domain)(id, name, age, domain)

即使年龄是NULL,我如何才能获得所有 4 列?所以它可能类似于:(453, John, NULL, johnDoe)(453, John, 37, johnDoe)

为了访问 MySQL 服务器,我使用了 Swift Perfect 的原生 MySQL 框架。

编辑: 让我的表也有这些列:

randomValue1 INT ALLOW NULL
randomValue2 INT NOT NULL
randomValue3 INT ALLOW NULL

所以如果我获取数据,它可能是 7 个值(如果一切都已设置)或 6 个值,如果 smth 未设置,那么如何知道设置了什么,未设置什么?

【问题讨论】:

  • 查看用于查询的代码会很有用
  • SELECT id,name,age,domain from TABLENAME。它工作正常。
  • Select * 将为您提供所有 4 列,包括年龄为 null 的行。你的意思是如果值不存在,你想得到字符串 NULL 吗?如果是这样,为什么?如果您这样做,您会将所有行中的年龄转换为字符串。
  • SELECT * FROM list WHERE id = '(id)'
  • @GurV 这是一个简单的例子。我有另一个表,更大,它包含 3 列具有 NULL 值,所以当我收到数据时,我需要解析它。如果我使用简单的“count”函数,它并不代表哪些列是 NULL。

标签: mysql null perfect


【解决方案1】:

如果您可以使用默认值,例如 -1(或 0 或其他),您可以使用 coalesce(age, -1) 来获取该值而不是 null。

select id, name, coalesce(age, -1) age, domain from t;

并在您的应用程序中正确处理 -1 年龄。

【讨论】:

    【解决方案2】:

    您可以使用简单查询来获取所有四列的结果。如果“age”列不包含任何值,那么它将返回“null”,否则所有列的值都会在输出中。

    SELECT id, name, age, domain FROM TABLE_NAME;
    

    【讨论】:

    • 如果年龄为“null”,我收到的值数组的计数为 3
    猜你喜欢
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    • 2021-04-13
    • 2021-03-11
    • 2014-01-27
    • 1970-01-01
    • 2012-10-05
    • 2018-09-21
    相关资源
    最近更新 更多