2011-09-29 109 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,