2014-04-30 79 views
0

這裏有。我要提前道歉,因爲我絕不是一個sql guru(甚至是noob)。我有一個表格式如下:Select語句檢查列中的數據,以及是否有數據將其包含在select語句中

Community Number Street Address Street Name Unit Number Account Number 
123    5432    Oak Street Null    1 
123    5433    Oak Street Null    2 
234    456    Cypress Lane C12    3 
. 
. 
. 

我想創建一個將納入街道地址,姓名和單位號碼的文件夾。如果沒有單位號碼,只需創建街道地址文件夾。

的文件夾會讀這樣:

5432 Oak Street 
5433 Oak Street 
456 Cypress Lane #C12 

這是我有我的選擇語句,到目前爲止,它工作得很好,前兩個地址。我不知道該做什麼的時候有一個單位號碼。我猜是有某種如果其他類型檢查單位字段中是否有數據,如果是,請將單位號碼附加到地址。如果沒有,只需使用地址和街道。

SELECT DISTINCT CAST([Street Address] as nvarchar(80)) + ' ' + [Street Name] as Address 

我正在尋找將評估單元號字段是否爲空或包含數據,然後通過SELECT語句的正確信息的聲明...

任何幫助將不勝感激。

謝謝

+0

您可以使用[ISNULL](http://technet.microsoft.com/zh-cn/library/ms184325.aspx)。 – Goose

回答

0

使用CASE表達:

SELECT DISTINCT CAST([Street Address] as nvarchar(80)) + 
       ' ' + [Street Name] + 
       CASE WHEN [Unit Number] IS NULL 
        THEN '' 
        ELSE '#' + CAST([Unit Number] as nvarchar(10)) 
       END as Address 
0

使用isNull(a, b)功能,它有兩個參數,返回第一個參數,如果它不爲空,或者第二個參數,如果第一個是空值。

SELECT DISTINCT [Street Address] + ' ' + [Street Name] + 
      isnull(' ' + [Unit Number], '') as Address 
0

當您串聯多個列,並且如果這些這些列是空列它始終是最好使用用ISNULL()COALESCE()功能上它們列,以避免在最後的連接值意外的空值。

SELECT 
     ISNULL(CAST([Street Address] as nvarchar(80)) + ' ' ,'') 
    + ISNULL(CAST([Street Name] as nvarchar(80)) + ' ' ,'') 
    + ISNULL(CAST([Unit Number] as nvarchar(80)) ,'') AS [Address] 
FROM Table_Name