when为null时显示自定义文本其他明智的显示ID

时间:2012-07-31 17:55:05

标签: sql sql-server sql-server-2008

我有一个查询,如果没有匹配的项目ID,我似乎无法让它显示'没有项目':

(select (case when prj.Proj_ID is null or prj.Proj_ID =  '' 
    then 'No Project' 
    ELSE prj.Proj_ID + ', ' + prj.[DESC] 
    END) 
from prj 
where prj.Proj_ID = other.Proj_ID)  as 'Project Description'

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

SELECT
  CASE WHEN (prj.Proj_ID IS NULL OR prj.Proj_ID = '') THEN 'No Project'
    ELSE prj.Proj_ID + ', ' + prj.[DESC]
  END as 'Project Description'
FROM
  other
  LEFT JOIN prj on prj.Proj_ID = other.Proj_ID

如果你从OTHER数据库加入PRJ,你需要加入它。如果在PRJ表中找不到Proj_ID,则case语句将返回“No Project”。括号将有助于解决prj.Proj_ID的条件语句。

在原始查询中,您似乎没有指定要加入的表,而是通过语句where prj.Proj_ID = other.Proj_ID) as 'Project Description'指示加入。

答案 1 :(得分:0)

试试这样:

SELECT
  CASE WHEN (other.Proj_ID IS NULL OR other.Proj_ID = '') THEN 'No Project'
    ELSE other.Proj_ID + ', ' + prj.[DESC]
  END as 'Project Description'
FROM
  other
  LEFT JOIN prj on ISNULL(prj.Proj_ID,0) = ISNULL(other.Proj_ID,0)

答案 2 :(得分:0)

您还应检查项目描述是否为null,否则在将prj.Proj_ID + ', '连接到它时可能会返回null:

SELECT CASE
         WHEN prj.Proj_ID IS NULL
               OR prj.Proj_ID = '' THEN 'No Project'
         ELSE prj.Proj_ID + COALESCE(', ' + prj.[DESC], '')
       END AS 'Project Description'
FROM   prj
       LEFT OUTER JOIN other
         ON prj.Proj_ID = other.Proj_ID 

(我也是这样做的,如果描述为null,它也不会显示逗号)

相关问题