在SQL中为空值赋予标签

时间:2014-03-03 14:54:36

标签: sql oracle

我有SQL声明如下:

Select TableB.section 
from TableA left join TableB on TableA.fk = TableB.pk 
group by TableB.section

由于这是left joinTableB.Section可能会返回 null ,因为TableA.fk行可能 null 所以group by子句将为该行返回 null

所以我有机会得到这样的东西:

TableB.Section
-------------
| Section 1 |
+-----------+
| Section 2 |
+-----------+
| NULL      |
+-----------+

如何在我的SQL语句中将单词NULL替换为类似:“无值”的好文本?

3 个答案:

答案 0 :(得分:6)

您还需要在NVL()条款中应用COALESCE() / GROUP BY!另外,它本身就是语法错误

Select NVL(TableB.section, 'No Value')
from TableA left join TableB on TableA.fk = TableB.pk 
group by NVL(TableB.section, 'No Value')

答案 1 :(得分:5)

Select NVL(TableB.section, 'No Value')
from TableA left join TableB on TableA.fk = TableB.pk 
group by TableB.section

答案 2 :(得分:2)

对于 oracle ,请使用NVL()

Select NVL(TableB.section, 'nice text')
from TableA left join TableB on TableA.fk = TableB.pk 
group by NVL(TableB.section, 'nice text')

对于 SQL Server ,您可以使用ISNULL(TableB.section, 'nice text')COALESCE(TableB.section, 'nice text')

我想 MySql 中也有IFNULL()

编辑:正如OracleUser的答案所述; Oracle也需要NVL()中的group by