2017-02-23 80 views
-1

也许我很愚蠢,也许我是盲目的,但我只是Swift开发者,他试图处理MySQL的某些方面。MySQL SELECT * FROM(包括NULL值)

我有一个简单的表有几列:

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个值,所以如何会知道什么是设置,什么不是?

+0

查看您用于查询的代码 – RiggsFolly

+0

'SELECT ID,name,age,domain from TABLENAME'会很有用。 它工作正常。 –

+0

选择*会给你所有的4列,包括年龄为零的行。你的意思是你想要得到字符串NULL,如果值不存在?如果是这样,为什么?如果你这样做,你会将所有行的年龄换算成字符串。 – GurV

回答

1

如果您确定有一个默认值,比如-1(或0或别的什么),你可以使用coalesce(age, -1)来获取价值,而不是空的。

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

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

+0

酷!它的工作原理,谢谢! –

0

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

SELECT id, name, age, domain FROM TABLE_NAME; 
+0

如果年龄是“空”,我收到的值的数组数为3 –