【问题标题】:need to convert number to string with nvl and to_char in sql developer需要在 sql developer 中使用 nvl 和 to_char 将数字转换为字符串
【发布时间】:2014-07-28 02:36:36
【问题描述】:

我正在尝试编写一个查询,该查询将为我提供部门表中的所有信息,并与员工表连接以获取所有部门经理的姓名。除了一个没有经理的部门,我可以得到它们,为此我需要打印出“no manager”。我曾尝试在 WHERE 子句中使用 nvl 和 to_char,但我认为我写的不正确。

这是我写的代码:

SELECT d.department_id,d.DEPARTMENT_NAME,d.LOCATION_ID,d.MANAGER_ID,
e.first_name||' '||e.last_name AS Manager
FROM departments d
JOIN employees e ON d.MANAGER_ID = e.employee_ID
WHERE NVL(TO_CHAR(d.MANAGER_ID),'No Manager');

当我在没有 WHERE 子句的情况下运行它时,我得到了正确的输出,除了那个缺少的部门。

【问题讨论】:

    标签: sql oracle outer-join


    【解决方案1】:

    您需要的是 OUTER JOIN。

    select  d.department_id,
            d.department_name,
            d.location_id,
            coalesce(d.manager_id, 'No Manager'),
            coalesce(e.first_name||' '||e.last_name, 'No Manager')  as manager
    from    departments d
    left outer join
            employees e 
            on d.manager_id = e.employee_id;
    

    使用内部联接,您将只获得那些有经理的部门。

    LEFT OUTER JOIN 确保查询返回左侧表中的所有记录,即部门。

    COALESCENVL 相似,并且是跨不同 DBMS 的标准,而 NVL 是 Oracle 特定的。

    【讨论】:

      猜你喜欢
      • 2015-09-05
      • 2015-09-04
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      • 1970-01-01
      • 2014-04-24
      • 1970-01-01
      • 2016-06-01
      相关资源
      最近更新 更多