【问题标题】:Oracle SQL report generation without null不带空值的 Oracle SQL 报告生成
【发布时间】:2018-12-11 11:00:23
【问题描述】:

我的查询:

SELECT s.artist_id AS ArtistID,
       s.name AS Song,
       at.name AS artistname,
       a.name AS Albumname
  FROM album s
       LEFT OUTER JOIN song a ON s.id = a.album_id
       LEFT OUTER JOIN artist at ON at.id = s.artist_id;

歌曲和专辑表中为空

对于加入表格后的上述查询,报告中为空 (演示结果)

实际结果

A B     
1 2                                                        
3 

预期结果

A B                                   
1 2                                                  
3 *  

我想在 excel 中打印上述结果而不是 null 它应该替换为任何字符。你能帮我怎么做吗?

【问题讨论】:

    标签: sql oracle subquery nvl


    【解决方案1】:

    对此的 ISO/ANSI 标准函数是COALESCE()

    SELECT a.artist_id AS ArtistID,
           a.name AS Song,
           COALESCE(ar.name, '*') AS artistname,
           COALESCE(s.name, '*') AS Albumname
    FROM album a LEFT OUTER JOIN
         song s
         ON a.id = d.album_id LEFT OUTER JOIN
         artist ar
         ON ar.id = a.artist_id;
    

    请注意,我更改了表别名,因此它们是表名的缩写。

    【讨论】:

      【解决方案2】:

      一种选择是使用NVL 函数,例如

      nvl(a.name, '*') as albumname
      

      或者,DECODE 可能会有所帮助:

      decode(a.name, null, '*', a.name) as albumname
      

      CASE:

      case when a.name is null then '*'
           else a.name
      end as albumname
      

      【讨论】:

      • "ISO/ANSI 标准函数是COALESCE():"
      猜你喜欢
      • 1970-01-01
      • 2019-04-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2011-03-02
      • 2020-05-10
      • 1970-01-01
      • 2021-12-30
      相关资源
      最近更新 更多