MS SQL Server 2008中的空处理

MS SQL Server 2008中的空处理,sql,sql-server,sql-server-2008,null,Sql,Sql Server,Sql Server 2008,Null,我不是SQL DBA,我遇到了一个问题。我们运行MS SQL 2008 server,并刚刚从MS SQL 2000升级了它。我正在尝试运行在MS SQL 2000中为DB创建的查询,并将结果用于我们的邮件列表 查询是: SELECT DISTINCT Title, FirstName, MiddleInitial, LastName, Suffix, CompanyName, BAddress, BAddress2, BCity, BState, BZip FROM MailingExpo

我不是SQL DBA,我遇到了一个问题。我们运行MS SQL 2008 server,并刚刚从MS SQL 2000升级了它。我正在尝试运行在MS SQL 2000中为DB创建的查询,并将结果用于我们的邮件列表


查询是:

SELECT DISTINCT Title, FirstName, MiddleInitial, LastName, Suffix, 
CompanyName, BAddress, BAddress2, BCity, BState, BZip
FROM MailingExportView
WHERE     AdvanceMailing = 0 
ORDER BY BZip, LastName

这给了我们类似的东西:

Title   FirstName   MiddleInitial   LastName    Suffix  CompanyName BAddress    BAddress2   BCity   BState  BZip
Mr. Bob NULL    Smith   NULL    NULL    12345 Main , Anytown    State, NULL NULL

我不想得到空值。如果字段为空,我希望它返回为空

我从其他网站和这里读过关于空处理的内容

我已尝试重新安排此项,以便ISNULL将Null放在不同的表中:


我在这里不知所措。有人能帮我吗?

在需要空白的列周围缠绕聚结

COALESCE(MiddleInitial,'') AS MiddleInitial   

对其他列重复此操作

在需要空白的列周围环绕合并

COALESCE(MiddleInitial,'') AS MiddleInitial   

对其他列重复此操作

如果只需要空白而不是空值,请重试


合并(FieldThatMayBeNull,”)为FieldThatMayBeNull

如果您想要的是空白而不是空值,请尝试


合并(FieldThatMayBeNull“”)为FieldThatMayBeNull

将任何可能为空的字段的选择更改为
ISNULL(列“”)

SELECT DISTINCT 
     ISNULL(Title, '') AS Title, 
     ISNULL(FirstName, '') FirstName, 
     ISNULL(MiddleInitial, '') MiddleInitial, 
     ISNULL(LastName, '') LastName, 
     ISNULL(Suffix, '') Suffix, 
     ISNULL(CompanyName, '') CompanyName, 
     ISNULL(BAddress, '') BAddress, 
     ISNULL(BAddress2, '') BAddress2, 
     ISNULL(BCity, '') BCity, 
     ISNULL(BState, '') BState, 
     ISNULL(BZip, '') BZip
FROM MailingExportView
WHERE     AdvanceMailing = 0 
ORDER BY BZip, LastName

将任何可能为空的字段的选择更改为
ISNULL(列“”)

SELECT DISTINCT 
     ISNULL(Title, '') AS Title, 
     ISNULL(FirstName, '') FirstName, 
     ISNULL(MiddleInitial, '') MiddleInitial, 
     ISNULL(LastName, '') LastName, 
     ISNULL(Suffix, '') Suffix, 
     ISNULL(CompanyName, '') CompanyName, 
     ISNULL(BAddress, '') BAddress, 
     ISNULL(BAddress2, '') BAddress2, 
     ISNULL(BCity, '') BCity, 
     ISNULL(BState, '') BState, 
     ISNULL(BZip, '') BZip
FROM MailingExportView
WHERE     AdvanceMailing = 0 
ORDER BY BZip, LastName

我想您可以在类似于以下内容的情况下使用ISNULL()函数:

    SELECT DISTINCT ISNULL(Title, ''), ISNULL(FirstName, ''), ISNULL(MiddleInitial, ''), ISNULL(LastName, ''), ISNULL(Suffix, ''),  ISNULL(CompanyName, ''), ISNULL(BAddress, ''), ISNULL(BAddress2, ''), ISNULL(BCity, ''), ISNULL(BState, ''), ISNULL(BZip, '') FROM MailingExportView WHERE     AdvanceMailing = 0  ORDER BY BZip, LastName 

我想您可以在类似于以下内容的情况下使用ISNULL()函数:

    SELECT DISTINCT ISNULL(Title, ''), ISNULL(FirstName, ''), ISNULL(MiddleInitial, ''), ISNULL(LastName, ''), ISNULL(Suffix, ''),  ISNULL(CompanyName, ''), ISNULL(BAddress, ''), ISNULL(BAddress2, ''), ISNULL(BCity, ''), ISNULL(BState, ''), ISNULL(BZip, '') FROM MailingExportView WHERE     AdvanceMailing = 0  ORDER BY BZip, LastName 

没有告诉我们你尝试了什么不幸的是你的问题是什么

也就是说,有两种标准方法可以将select上的null值转换为默认值
ISNULL
合并
CASE
也是一个选项,而且它超出了顶部,但我还是包括了它

SELECT DISTINCT 
   Title, 
   FirstName, 
   COALESCE(MiddleInitial, '') MiddleInitial, 
   LastName, 
   ISNULL(Suffix,'') Suffix, 
   CompanyName, 
   CASE WHEN BAddress IS NULL THEN '' ELSE BAddress END BAddress, 

没有告诉我们你尝试了什么不幸的是你的问题是什么

也就是说,有两种标准方法可以将select上的null值转换为默认值
ISNULL
合并
CASE
也是一个选项,而且它超出了顶部,但我还是包括了它

SELECT DISTINCT 
   Title, 
   FirstName, 
   COALESCE(MiddleInitial, '') MiddleInitial, 
   LastName, 
   ISNULL(Suffix,'') Suffix, 
   CompanyName, 
   CASE WHEN BAddress IS NULL THEN '' ELSE BAddress END BAddress, 

4 COALESCE vs.2为空,请选择。唯一的区别是:(1)coalesce将接受任意数量的参数,并返回列表中第一个不为null的参数;(2)isnull更易于键入。4 coalesce与2 isnull,因此请选择。唯一的区别是:(1)coalesce将接受任意数量的参数并返回列表中第一个不为null的参数,(2)isnull更易于键入。