选择语句以检查列中的数据以及是否有数据将其包含在select语句中

时间:2014-04-30 20:50:22

标签: sql sql-server select

到此为止。我要提前道歉,因为我绝不是一个sql大师(甚至是菜鸟)。我有一个格式如下的表:

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语句所具有的,它在前两个地址上运行得很好。我不知道该怎么做才有单位号码。我猜是有某种If THEN ELSE类型检查单元字段中是否有数据,如果有,请将单元号附加到地址。如果没有,只需使用地址和街道。

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

我正在寻找一个语句来评估单元号字段是否为空或包含数据,然后从SELECT语句中传递正确的信息......

非常感谢任何帮助。

谢谢

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

使用isNull(a, b)函数,它接受两个参数,如果不是null,则返回第一个参数;如果第一个参数为null,则返回第二个参数。

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

答案 2 :(得分:0)

当您连接多个列并且这些列中的任何列都是Nullable列时,最好在它们列上使用use ISNULL()COALESCE()函数以避免最终连接值中出现意外的null值。

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