2013-01-18 140 views
0

一个表,我需要运行一个查询上有可以有一个NULL值,空字符串,或一些文字,数字字段等返回null或空字符串

所以,比如我有包含字段id,field1,field2,field3,field4的表“数据”。

该id是自动递增的键,因此将有一个值,但其他三个字段可以具有上述任何实例。

因此,查询结果可能是id = 1,field1 = NULL,field2 ='',field3 ='一些文本',field4 ='5'。

如何在SELECT语句中为每个NULL字段返回空字符串?

谢谢!

[其他信息]

我忘了提及这一点,直到后,我已经得到了一些答复,所以我不知道这是否会改变答案。

此外,表中的某些字段是来自另一个表的ID,所以我正在进行内部连接,但是“数据”表中的ID字段中可能有或没有值。

使用上面的“data”表,如果field4是5(而不是上面最初定义的'5'),并且是表“name”的id,那么我会有一个类似如下的连接:

INNER JOIN name n ON n.id = data.field4 

我相信这是连接,这是阻止一些行在我的结果集中返回。我该如何处理?

如果有人已经回答,谢谢并抱歉。

回答

0
SELECT id, COALESCE(field1,''), COALESCE(field2,''), COALESCE(field3,'') 
FROM data 
+0

*我怎样才能返回一个空字符串为空的每个字段?*** – m0skit0

2

使用IFNULL

SELECT id, IFNULL(field1,''), IFNULL(field2,''), IFNULL(field3,'') 
FROM data 
+0

正如你可以看到我发布这个答案后添加了一些信息。当一个记录可能在field4中的名称ID为空时,如何处理连接,但另一个记录在field4中的值是否为空。我只收回在field4中有值的记录,所以我假设该字段中的空记录不会与连接一起工作,因此它们不在结果集中。 – marky

0

LEFT JOIN - 这就是答案。

我刚刚将我的INNER JOINS改为LEFT JOINS,现在我得到了所有行,包括id字段为空的那些行。

当然,我的“[附加信息]”在我原来的问题是不是故事的全部前提供的信息。对不起,伙计们,我的不好。 Salil根据我最初提供的信息正确回答。