Sql server 2008 如何在SQL中用空字符串替换NULL?

Sql server 2008 如何在SQL中用空字符串替换NULL?,sql-server-2008,Sql Server 2008,我使用下面的查询以逗号分隔的方式获取列值 (SELECT STUFF ((SELECT ',' + CAST(Proj_ID AS VARCHAR) FROM PROJECT left join dbo.PROJ_STA on Project.PROJ_STA_ID = Project.PROJ_STA_ID WHERE ENTER_DT < DATEADD(Year, -7, GETDATE()) AND PROJ_LFCYC_STA_CD = 'A'

我使用下面的查询以逗号分隔的方式获取列值

    (SELECT STUFF ((SELECT  ',' + CAST(Proj_ID AS VARCHAR) FROM PROJECT
    left join dbo.PROJ_STA on
    Project.PROJ_STA_ID = Project.PROJ_STA_ID
    WHERE ENTER_DT < DATEADD(Year, -7, GETDATE())  AND PROJ_LFCYC_STA_CD = 'A' AND 
    PROJ_STA.PROJ_STA_DS = 'Cancelled' FOR XML PATH('')), 1, 1, '') 
    AS Enter_Date)  
有谁能指导我用空字符串替换空值吗

更新:

    (SELECT STUFF ((SELECT  ',' + coalesce( CAST(Proj_ID AS VARCHAR), '' ) FROM PROJECT
    left join dbo.PROJ_STA on
    Project.PROJ_STA_ID = Project.PROJ_STA_ID
    WHERE ENTER_DT < DATEADD(Year, -7, GETDATE())  AND PROJ_LFCYC_STA_CD = 'A' AND 
    PROJ_STA.PROJ_STA_DS = 'Cancelled' FOR XML PATH('')), 1, 1, '') 
    AS Enter_Date)  

您可以使用该函数删除空值

Coalesce接受任意数量的列或常量,并返回第一个非空的列或常量

你的问题是:

(SELECT STUFF ((SELECT  ',' + convert(varchar, coalesce( Proj_ID, '' )) FROM PROJECT
left join dbo.PROJ_STA on
Project.PROJ_STA_ID = Project.PROJ_STA_ID
WHERE ENTER_DT < DATEADD(Year, -7, GETDATE())  AND PROJ_LFCYC_STA_CD = 'A' AND 
PROJ_STA.PROJ_STA_DS = 'Cancelled' FOR XML PATH('')), 1, 1, '') 
AS Enter_Date) 
Try-IsNull

或结合


AdventureWorks数据库中的一个示例

select e.ModifiedDate, ISNULL(p.FirstName,'') as FirstName
from Person.BusinessEntity as e 
    left join Person.Person as p on e.BusinessEntityID = p.BusinessEntityID 

通过使用此选项,如果没有匹配的个人记录,FirstName将显示为空字符串,而不是NULL

谢谢,但是如果我在查询中使用coalsec或isnull,我仍然会得到NULL值。如果您已经尝试使用coalesce和isnull,您是否可以显示不起作用的版本?与函数本身相比,您的查询更可能出现问题@saravanakumarr模式也很方便!当然,请参考更新的问题…我没有得到错误。我再次得到空值。我仍然得到空值。项目ID是什么?一个int?是的,但是因为我用逗号分隔它,所以我使用它作为VarcharTry-select','+convertvarchar,coalesceProj_ID,Try-IFNULLcolumnName,
select ISNULL(Column,'') as ColumnName
select COALESCE(NULLIF(ColumnName,''), 'Column')
select e.ModifiedDate, ISNULL(p.FirstName,'') as FirstName
from Person.BusinessEntity as e 
    left join Person.Person as p on e.BusinessEntityID = p.BusinessEntityID