为什么我在此代码中不断收到语法错误

时间:2018-09-11 08:10:26

标签: postgresql

在下面的代码中,我不断遇到CASE的语法错误。是因为我的代码错误吗?

SELECT last_name, first_name, manager_id
FROM employees,
CASE WHEN manager_id='null' THEN text 'unmanaged'
END 
FROM employees

2 个答案:

答案 0 :(得分:0)

您的主要问题是查询中有两个FROM子句。所以这样的事情应该起作用:

  SELECT last_name,
         first_name,
         manager_id,
         CASE WHEN manager_id IS NULL THEN 'unmanaged'::text ELSE 'managed'::text END
  FROM employees

此外,请从PostgreSQL文档中注意到这一点:

  

不要写expression = NULL,因为NULL不“等于” NULL。 (空值表示一个未知值,并且未知两个未知值是否相等。)此行为符合SQL标准。

答案 1 :(得分:0)

我在这里假设一点,但我认为您想要这样的东西:

SELECT last_name, 
  first_name, 
  manager_id, 
  CASE WHEN manager_id='null' THEN 'unmanaged' ELSE 'managed' END 
FROM employees

...或者可能是这样:

SELECT last_name, 
  first_name, 
  COALESCE(manager_id, 'unmanaged')
FROM employees