2011-09-29 89 views
0

我不是SQL DBA,而且遇到问题。我们运行MS SQL 2008服务器,并从MS SQL 2000升级它。我试图运行在MS SQL 2000中为数据库创建的查询,并将结果用于我们的邮件列表。MS SQL Server 2008中的空处理


查询是:

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 

我想没有得到NULL。如果该字段为空,理想情况下,我希望它恢复空白。

我已阅读过有关从其他网站和这里;

http://technet.microsoft.com/en-us/library/ms170707.aspx

我试着重新安排这使得ISNULL会把空在不同的表:

How to replace blank (null) values with 0 for all records?

http://bytes.com/topic/sql-server/answers/888443-convert-null-blank-if-not-null-remove-commas-string

http://www.w3schools.com/sql/sql_isnull.asp

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

+0

4 COALESCE与2 ISNULL,让你挑。关于唯一的区别是(1)coalesce将采用任意数量的参数并返回列表中非空的第一个参数,(2)isnull更容易输入。 –

回答

2

包裹COALESCE各地要将空白

COALESCE(MiddleInitial,'') AS MiddleInitial 

重复其它列

2

如果你想要的是一个空白,而不是一个空列,尝试

COALESCE(FieldThatMayBeNull, '') as FieldThatMayBeNull

1

将选择更改为ISNULL(Column, '')以查找任何潜在空字段...

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 
0

我想你可以在你的情况类似下面的东西使用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 
0
SELECT DISTINCT 
COALESCE(Title,'') Title, 
COALESCE(FirstName,'') FirstName, 
COALESCE(MiddleInitial,'') MiddleInitial, 
COALESCE(LastName,'') LastName, 
COALESCE(Suffix,'') Suffix, 
COALESCE(CompanyName,'') CompanyName, 
COALESCE(BAddress,'') Baddress, 
COALESCE(BAddress2,'') Baddress2, 
COALESCE(BCity,'') BCity, 
COALESCE(BState,'') BState, 
COALESCE(BZip,'') BZip 
FROM MailingExportView 
WHERE AdvanceMailing = 0 
ORDER BY BZip, LastName ; 
1

没有向我们展示你试过它的unlcear你的问题是什么。

这就是说有两种标准方式将null转换为select的默认值。 ISNULLCOALESCECASE也是一个选项,它的过顶,但我无论如何也包括

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