2014-04-30 57 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