我有SQL
声明如下:
Select TableB.section
from TableA left join TableB on TableA.fk = TableB.pk
group by TableB.section
由于这是left join
,TableB.Section
可能会返回 null ,因为TableA.fk
行可能 null 所以group by子句将为该行返回 null 。
所以我有机会得到这样的东西:
TableB.Section
-------------
| Section 1 |
+-----------+
| Section 2 |
+-----------+
| NULL |
+-----------+
如何在我的SQL语句中将单词NULL
替换为类似:“无值”的好文本?
答案 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
。